有兩個陣列,并且都有 id 屬性和其他屬性。要求是比較兩個陣列并創建 new 將年齡屬性添加到 arr1 中的相應物件
let arr1 = [{
id: 1,
name: 'a'
}, {
id: 2,
name: 'b'
}, {
id: 3,
name: 'c'
}];
let arr2 = [{
id: 1,
age: 20
}, {
id: 3,
age: 35
}];
const newArr = [];
arr1.forEach(obj => {
return arr2.forEach((obj2) => {
if (obj.id === obj2.id) {
newArr.push(Object.assign({}, obj, {
age: obj2.age
}))
}
})
})
console.log(newArr);
//outputs [{id:1, name: 'a', age:20}, {id:3, name: 'c', age:35}]
uj5u.com熱心網友回復:
我不知道這是否是最優雅的解決方案,但您可以創建您的函式并使用它進行映射:
let arr1 = [{
id: 1,
name: 'a'
}, {
id: 2,
name: 'b'
}, {
id: 3,
name: 'c'
}];
let arr2 = [{
id: 1,
age: 20
}, {
id: 3,
age: 35
}];
function addAge(elt, arr2) {
let elt_w_age = arr2.find(x => x.id === elt.id);
if (elt_w_age != null) {
elt.age = elt_w_age.age
return elt
}
else {
return null
}
}
console.log(arr1.map(x => addAge(x, arr2)).filter(x => x !== null))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363176.html
標籤:javascript 字典 foreach
