查找数组重复元素的方法以及数组去重

2021-09-03  本文已影响0人  AuraAura
function duplicates(arr) {
    var temp = arr.filter(function(item,i){
          return arr.indexOf(item)!== i;
     })
    return temp
}
//输入[1, 2, 4, 4, 3, 3, 1, 5, 3]
//输出[1,3,3,4]

该方法可以查询重复元素,但元素重复次数超过两次以上就会输出多个重复元素

1、使用 reduce 和 includes

function unique(array) {
  return array.reduce(function (pre, item) {
    return pre.includes(item) ? pre : pre.concat(item);
  }, []);//第二个参数为[ ]要设置初始值,不然会从index1开始遍历
}
var array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4];
unique(array);

2、使用 set 去重

var array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4];
var newArr = [...new Set(array)];
console.log(newArr); //[1, 5, 2, 3, 4]

3、使用map去重

function unique (arr) {
    let map = new Map()
    let array = new Array()  // 数组用于返回结果
    for (let i = 0; i < arr.length; i++) {
        if (map.has(arr[i])) {  // 如果有该key值
            map.set(arr[i], true)
        } else {
            map.set(arr[i], false)   // 如果没有该key值
            array.push(arr[i])
        }
    }
    return array
}
var array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4];
unique(array);

补充关于reduce用法

array.reduce(callback, [initialValue])
array.reduce((previousValue, currentValue, index, array) => { }, [initialValue])

其中 callback 函数有四个参数

上一篇下一篇

猜你喜欢

热点阅读