У меня есть два объекта массива, и я хочу сравнить их таким образом, чтобы, когда значение symbol
в array1
совпадает с keyNumber
в array2
, установите соответствующее значение checked
в array1
на true
.
Я использую .map
с обоими массивами, но не могу получить желаемый результат.
Это два моих массива: -
const array1 = [{
symbol: '1',
checked: false
},
{
symbol: '2',
alias: 'abc',
checked: false
},
{
symbol: '3',
alias: 'def',
checked: false
}];
const array2= [{
keyNumber: '1',
type: 'number',
},
{
keyNumber: '2',
type: 'number'
}];
Ниже приведен код чтобы получить обновленный массив:
const array3 = array1.map(item => {
return array2
.map(key =>
key.keyNumber === item.symbol
? { ...item, checked: true, type: key.type }
: item
)
.reduce((obj, data) => data, {});
});
console.log(array3);
Я получаю только результат, соответствующий последнему ключу, а не все.
array3 = [{
symbol: '1',
checked: false
},
{
symbol: '2',
alias: 'abc',
checked: true,
type: 'number'
},
{
symbol: '3',
alias: 'def',
checked: false
}];
Ожидаемый результат:
array3 = [{
symbol: '1',
checked: true,
type:'number'
},
{
symbol: '2',
alias: 'abc',
checked: true,
type: 'number'
},
{
symbol: '3',
alias: 'def',
checked: false
}];