可以使用forEach内置方法遍历对象数组进行处理。首先,通过将对象数组1映射为map,并使用对象的id作为键,使对象做为值,将其id作为键映射到一个对象中。然后可以重命名id为new_Id的属性,从而达到更改对象属性的目的。接着,可以使用filter方法,将第二个对象数组中与第一个不匹配的对象过滤出来,并删除它们。最后,可以将新的对象数组返回。
示例代码如下:
function renameAndDelete(arr1, arr2, new_Id){
// 将数组1映射为map
let map = {};
arr1.forEach(obj => {
map[obj.id] = obj;
});
// 遍历对象数组2
arr2.forEach((obj2) => {
let obj1 = map[obj2.id];
// 如果id匹配,则重命名id
if(obj1){
obj1[new_Id] = obj1.id;
delete obj1.id;
}
});
// 过滤不匹配的对象并删除它们
let newArr = arr1.filter(obj => {
return map[obj.id] !== undefined;
});
return newArr;
}
使用示例:
const arr1 = [{id: 1, name: 'obj1'}, {id: 2, name: 'obj2'}];
const arr2 = [{id: 1, name: 'obj3'}, {id: 3, name: 'obj4'}];
const newArr = renameAndDelete(arr1, arr2, 'new_Id');
console.log(newArr); // [{new_Id:1, name:'obj3'}]