簡體   English   中英

如何使用javascript中的forEach方法從數組中刪除重復項

[英]How to remove duplicates from an array using forEach method in javascript

我有一個數組,其中有對象和字符串,現在我的目標是從字符串和對象中過濾所有重復項。

不明白的請留言

const data = [
  'apple',
  'mango',
  'orange',
  'grapes',
  'apple',
  'mango',
  {
    name: 'Mark',
    age: 28
  },
  {
    name: 'Mark',
    age: 28
  },
  {
    name: 'James',
    age: 28
  },
  'sapota',
  'gaua',
  {
    name: 'Williams',
    age: 26
  },
  {
    name: 'John',
    age: 24
  },
  'gaua'
]

console.log(data)

假設您沒有循環數據結構,您可以使用一種方法

function removeDup(arr){
   let known = [];
   return arr.filter(elem => {
      let str = JSON.stringify(elem); // Get string of whatever item we are dealing with
      if(!known.includes(str)){  //Check to see if we have seen this item before
         known.push(str);  //If we havnt add it to seen list
         return true;
      }
      return false;
   });
}

顯然,這僅限於 JSON.stringify 可以處理的任何內容。 此外,此方法假定在如下數組中: [{name: 'name'}, 'name']這兩個名稱是不同的東西,並且都將被返回。 如果您想將它們視為重復項,請告訴我

請注意,這不使用 forEach 循環,但可以很容易地更改為使用一個循環。

暫無
暫無

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

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