[英]How to find and remove the elem that match in two different arrays? Javascript
如何查找和刪除在兩個不同數組中匹配的元素?
例如
let arr = [
{ startTimestamp: 1602675569525, name: "Pip" },
{ startTimestamp: 1602664708822, name: "Jimmy" },
{ startTimestamp: 1234, name: "Hero" }
];
let arr2 = [
{ startTimestamp: 1602675569525, name: "Pip" },
{ startTimestamp: 1602664708822, name: "Jimmy" },
{ startTimestamp: 505050, name: "Kit" }
];
如果startTimestamp
匹配,那么我想刪除那些 elem。 輸出應該是
[
{ startTimestamp: 1234, name: "Hero" },
{ startTimestamp: 505050, name: "Kit" }
]
我在下面試過這個,但它只給了我[{startTimestamp: 1234, name: "Hero"}]
因為我只是在推動 arr[i] 但我也需要{ startTimestamp: 505050, name: "Kit" }
let newArr = [];
for (let i = 0; i < arr.length; i++) {
if(arr[i].startTimestamp !== arr2[i].startTimestamp) {
newArr.push(arr[i])
}
}
最好是合並它們,然后過濾雙打:
const newArr = [...arr, ...arr2].filter(
(item, index, self) => item.findIndex(
(prev) => prev.startTimestamp === item.startTimestamp
) === index
);
合並兩個數組並通過刪除重復的startTimestamp
對象來過濾項目會很好。
let arr = [ { startTimestamp: 1602675569525, name: "Pip" }, { startTimestamp: 1602664708822, name: "Jimmy" }, { startTimestamp: 1234, name: "Hero" } ]; let arr2 = [ { startTimestamp: 1602675569525, name: "Pip" }, { startTimestamp: 1602664708822, name: "Jimmy" }, { startTimestamp: 505050, name: "Kit" } ]; const result = [ ...arr, ...arr2 ].filter((item, index, origin) => origin.filter((subItem) => subItem.startTimestamp === item.startTimestamp).length === 1); console.log(result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.