我想要的是将所有对象从arrayToPush推入数组,但只有那些具有不同ID的对象。因此,在这种情况下,我想拥有一个ID为111,222,333,444,555的数组,并且不要在ID为333的arrayToPush中推送对象。我该如何实现?预先感谢
var array = [
{title: 'Something', id: 111},
{title: 'Something 2', id: 222},
{title: 'Something 3', id: 333}
]
var arrayToPush = [
{title: 'Something 4', id: 333},
{title: 'Something 5', id: 444},
{title: 'Something 6', id: 555}
]
for(var i = 0; i < arrayToPush.length; i++) {
array.push(arrayToPush[i])
}
答案 0 :(得分:2)
一种方法是过滤ArrayToPush
以消除现有元素,然后使用散布运算符将它们联系:
var array = [
{ title: "Something", id: 111 },
{ title: "Something 2", id: 222 },
{ title: "Something 3", id: 333 }
];
var arrayToPush = [
{ title: "Something 4", id: 333 },
{ title: "Something 5", id: 444 },
{ title: "Something 6", id: 555 }
];
var filtered = arrayToPush.filter(a => !array.find(b => b.id === a.id));
var result = [...array, ...filtered];
console.log(result);
答案 1 :(得分:1)
您可以遍历arrayToPush并使用array.find()检查对象是否存在于数组中
GLabel
答案 2 :(得分:1)
首先,您需要知道数组中的哪些ID:
const arrayIds = array.map(({ id }) => id); // [111, 222, 333]
然后,您需要过滤 arrayToPush ,以便遍历 arrayToPush 并过滤那些不包含在 array 中的内容:< / p>
const filteredArrayToPush = arrayToPush.filter(({ id }) => !arrayIds.includes(id));
然后连接两个数组 array 和 filteredArrayToPush :
array = [...array, ...filteredArrayToPush];