[英]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.