你可以使用JavaScript的Array.prototype.map()
方法来按照ID将对象数组映射并更新数组中的每个现有对象。
下面是一个代码示例:
// 假设我们有一个对象数组
let arr = [
{ id: 1, name: 'John' },
{ id: 2, name: 'Jane' },
{ id: 3, name: 'Bob' }
];
// 定义一个新的对象数组,用于更新现有对象
let updatedArr = [
{ id: 1, name: 'John Smith' },
{ id: 2, name: 'Jane Doe' }
];
// 使用map方法按照ID映射并更新现有对象
let mappedArr = arr.map((obj) => {
// 在updatedArr中查找具有相同ID的对象
let updatedObj = updatedArr.find((updatedObj) => updatedObj.id === obj.id);
// 如果找到了更新的对象,则使用更新的对象来创建一个新的对象
if (updatedObj) {
return { ...obj, ...updatedObj };
}
// 如果没有找到更新的对象,则返回原始对象
return obj;
});
// 打印映射并更新后的数组
console.log(mappedArr);
运行上述代码,你将得到以下结果:
[
{ id: 1, name: 'John Smith' },
{ id: 2, name: 'Jane Doe' },
{ id: 3, name: 'Bob' }
]
在上面的示例中,我们首先定义了一个包含现有对象的数组arr
和一个用于更新对象的数组updatedArr
。然后,我们使用map()
方法迭代arr
数组中的每个对象,并在updatedArr
中查找具有相同ID的对象。如果找到了更新的对象,则使用{ ...obj, ...updatedObj }
语法创建一个新的对象,其中...obj
是原始对象的属性,...updatedObj
是更新的对象的属性。如果没有找到更新的对象,则返回原始对象。最后,我们得到一个映射并更新后的数组mappedArr
。