簡體   English   中英

將對象推送到對象數組中,但前提是對象屬性是唯一的

[英]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));

然后連接兩個數組arrayfilteredArrayToPush

array = [...array, ...filteredArrayToPush];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM