簡體   English   中英

如何查找和刪除在兩個不同數組中匹配的元素? Javascript

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

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