实现一个对象数组的元素添加到另一个数组中并且只添加目标数组中不存在的元素,具体可以按如下方法进行实现:
const a = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
];
const b = [
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' },
{ id: 4, name: 'David' }
];
a.forEach(item => {
const existingItem = b.find(bItem => bItem.id === item.id);
if (!existingItem) {
b.push(item);
}
});
console.log(b); // 输出 [{ id: 2, name: 'Bob' }, { id: 3, name: 'Charlie' }, { id: 4, name: 'David' }, { id: 1, name: 'Alice' }]
在以上代码中,我们定义了两个对象数组 a
和 b
,其中数组 a
中包含了需要添加到数组 b
中的元素。我们使用 forEach()
方法遍历数组 a
中的每一个元素,在遍历过程中使用 find()
方法查找当前元素在数组 b
中是否已经存在,若不存在则将当前元素添加到数组 b
中。最后,我们打印出了修改后的数组 b
。
需要注意的是,在判断元素是否存在时我们使用了 find()
方法,该方法是 ES6 中新增的方法。该方法在旧版本的浏览器可能不被支持,此时需要使用其他的方法,比如 filter()
或 indexOf()
。另外,在上述的实现中,我们假定对象的 id
属性可以用于唯一性的判断。如果需要使用其他的属性进行判断,则需要相应地修改判断条件。