![](/img/trans.png)
[英]localStorage Array of Objects: Only push new object into array if unique
[英]Push object in array of objects but only if the object property is unique
我想要的是將所有對象從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])
}
一種方法是過濾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);
您可以遍歷arrayToPush並使用array.find()檢查對象是否存在於數組中
arrayToPush.forEach(x => {
if (!array.find(e => e.id === x.id)) {
array.push(x)
}
})
首先,您需要知道數組中包含哪些ID:
const arrayIds = array.map(({ id }) => id); // [111, 222, 333]
然后,您需要過濾arrayToPush ,以便遍歷arrayToPush並過濾那些不包含在array中的對象 :
const filteredArrayToPush = arrayToPush.filter(({ id }) => !arrayIds.includes(id));
然后連接兩個數組array和filteredArrayToPush :
array = [...array, ...filteredArrayToPush];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.