繁体   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