簡體   English   中英

無法刪除重復的項目

[英]Cannot remove duplicated item

我有這兩個數組:

原版的

[
   { id: "1"},
   { id: "2"},
   { id: "3"}
]

[
   { id: "1"},
   { id: "7"},
   { id: "9"}
]

我正在嘗試從original刪除所有old的項目,所以我這樣做了:

original = original.filter(function(el) {
                    return old.indexOf(el) < 0;
                }.bind(this));

但我得到了相同的物品,我做錯了什么? 這是代碼片段。

 let original = [{ id: "1" }, { id: "2" }, { id: "3" } ]; let old = [{ id: "1" }, { id: "7" }, { id: "9" } ]; console.log(original); original = original.filter(function(el) { return old.indexOf(el) < 0; }.bind(this)); console.log(original); 

  var original = [
   { id: "1"},
   { id: "2"},
   { id: "3"}
  ],
  old = [
     { id: "1"},
     { id: "7"},
     { id: "9"}
  ];

  var result = original.filter(function(obj) { return old.every(function(obj2) { return obj.id != obj2.id;}) });

console.log(result)

這將返回:2,3

indexOf無法比較對象的內容。

您需要檢查id

 var original = [ { id: "1"}, { id: "2"}, { id: "3"} ], old = [ { id: "1"}, { id: "7"}, { id: "9"} ]; original = original.filter(function(el) { return old.findIndex(item => item.id === el.id) < 0; }); console.log(original); 

您可以將Set與不需要的id進行過濾。

 var array = [ { id: "1" }, { id: "2" }, { id: "3" }], old = [{ id: "1" }, { id: "7" }, { id: "9" }], oldSet = new Set(old.map(({ id }) => id)); array = array.filter(({ id }) => !oldSet.has(id)); console.log(array); 

使用filter和forEach

 var old=[ { id: "1"}, { id: "2"}, { id: "3"} ] var original=[ { id: "1"}, { id: "7"}, { id: "9"} ] var obj=[]; old.forEach((e)=>obj.push(e.id)) console.log(original.filter((e)=>!obj.includes(e.id)?true:false)) 

暫無
暫無

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

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