JS 数组去重 数组过滤重复

JS 数组去重 数组过滤重复

function array_deduplication(arr) {
    return arr.filter(function (c, index) {
        return arr.indexOf(c) === index;
    });
}

理论概念说明:

arr.filter

定义:

filter() 方法会创建一个新数组, 其包含通过所提供函数内部实现的逻辑过滤的所有元素。

说人话:

就是在 filter() 方法的回调函数中可以写一些过滤逻辑,逻辑为真的时候,当前元素将会返回,否则会被丢弃,这样就产生了一个新的数组,作为 filter() 的返回值。

数组去重解释:

文字解释:

  1. 不需去重数组
    假设数组值为 [1,2,3,4]
    遍历当前数组,元素1所在的位置为0、元素2的位置为1
  2. 需要去重数组
    假设数组值为[1,1,2,3,4]
    遍历当前数组,第一个元素1所在的位置为0、第二个元素1所在的位置为1、元素2的位置为2

如果在数组中通过 indexOf 查找某个元素,获取到元素的下标和当前遍历的下标正好相等,则说明改元素是第一个出现的,如果不相同则说明是重复的。

图表解释:

如果你还在糊涂,请看下面表格
在这里插入图片描述
当遍历到第二个1时,通过indexOf获取到的下标是第一次出现1时的0,但是当前遍历的索引下标为1。两个值不相同则说明1不是第一次出现,因此是我们要过滤掉的对象。

因此通过该方法就可以去重数组
[1]: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
[2]: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf


版权声明:本文为silence_pinot原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。