JS: 数组去重

作者: 写代码的海怪 | 来源:发表于2019-02-04 02:03 被阅读12次

数组去重算是面试题里常见的考点了,之前在 Medium 上看到一篇文章用三种方法实现数组去重的,感觉十分简洁。主要用到的是 Set, Array.filter, Array.reduce。可能第一种大家都知道,方方也讲过基数排序来去重,但是能用 filter, reduce 写成这样的真的很简洁呀。

使用 Set

let array = [1, 1, 2, 3, 3, 3, 3, 4, 4, 5, 6, 6, 7]

array = array.from(new Set(array))

console.log(array)

使用 filter

这个方法是每个元素都去看 index 是否和第一次出现该元素的 index 一样,如果是一样的就不一样的就过滤掉(因为这是第二次出现了),否则不过滤(是第一次出现)。

let array = [1, 1, 2, 3, 3, 3, 3, 4, 4, 5, 6, 6, 7]

array = array.filter((el, index) => array.indexOf(el) === index)

console.log(array)

使用 reduce

这种比较难以一眼看懂,其实本质上就是创建一个临时数组,遍历原数组的时候去判断当前元素是否已经存在于临时数组里了,如果存在那么不加入,否则加入。

let array = [1, 1, 2, 3, 3, 3, 3, 4, 4, 5, 6, 6, 7]

array = array.reduce((unique, el) => unique.includes(el) ? unique : [...unique, el], [])

console.log(array)

相关文章

  • 数组的去重和数组中对象的去重

    数组中对象去重 方式1 jq方式 方式2 原生js方式 普通数组的去重 方式1 普通的数组去重js 方式2 Se...

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • js数组去重

    Set结构去重 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 向 Se...

  • JS数组去重

    方法1:两层for循环,外层循环原数组,内层循环时进行比较。 方法2:利用对象的属性不能相同的特点去重 方法3:利...

  • js数组去重

  • js数组去重

    1.利用对象的属性唯一性去重 2.利用es6的Set

  • js数组去重

  • js 数组去重

  • JS数组去重

    方法一:遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 ...

  • js数组去重

    方法一 (es6 set方法,简单粗暴) 方法二 创建空数组,用indexOf方法检索,没有的话插入新数组中 方...

网友评论

    本文标题:JS: 数组去重

    本文链接:https://www.haomeiwen.com/subject/izstsqtx.html