JavaScript数组去重

  • 当前元素的下标,和从数组里找到该元素的下标一样时,说明是第一次出现
const deduped = [ 1, 1, 'a', 'a' ].filter( (el, i, arr) => arr.indexOf(el) === i);
console.log(deduped); // [ 1, 'a' ]
  • ES6 Set类似于数组,成员值唯一,经过过滤则没有重复值
const deduped = Array.from( new Set([ 1, 1, 'a', 'a' ]) );
console.log(deduped); // [ 1, 'a' ]

这两种当数组元素是对象或数组时,不起作用,因为对象存储的是引用,而变量存储的是值

  • 这种方法可以过滤任意类型的
function dedup(arr) {
    const hashTable = [];
    
    return arr.filter(function (el) {
      const key = JSON.stringify(el);
      if(hashTable.includes(key)==false){
        hashTable.push(key);
        return hashTable;
      }
      else{
        return false;
      }
    });
}
var deduped = dedup([
  { a: 1 },
  { a: 1 },
  [ 1, 2 ],
  [ 1, 2 ]
]);
console.log(deduped); 

参考文章推荐:
数组去重

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 偶然和同事谈到面试的Javascript问题,其中基本上都会有一道问题就是数组去重,随着对于语言深入的学习,这道基...
    IloveData阅读 3,440评论 0 0
  • Why underscore (觉得这部分眼熟的可以直接跳到下一段了...) 最近开始看 underscore.j...
    韩子迟阅读 5,169评论 0 57
  • 1.简单的循环遍历 最容易想到的方法就是for循环遍历数组,并用indexOf判断是否在数组中已经存在相同的值。 ...
    April_Le阅读 2,844评论 0 1
  • 总结一下利用JS解决去重问题的方法。总体思路: 构建一个新的空数组。 遍历数组,将不重复的元素Push到新数组中。...
    Zchao阅读 929评论 0 0
  • sigdaisy阅读 968评论 0 0