如何实现数组去重

方法1

运用Map.prototypeArray.prototype.filter:

function unique(arr) {
        let res = new Map();
        return arr.filter( (item) => !res.has(item) && res.set(item, 1))
}

代码逻辑为:
定义了一个unique函数,它操作这个arr数组;
函数内定义一个局部变量,res是一个Map的实例;
要返回arr的filter结果。箭头之后为真值则能够被取用:
如下例长度高于6均被取用:

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];

const result = words.filter(word => word.length > 6);

console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]

现在设定取用规则:

  1. res从来没有存过item;
  2. 与逻辑,如果没有存过item, 那么res这个Map实例就要存一下item了。(注:返回一个Map对象,可认为是true)

以上逻辑可以实现数组去重。

方法2

在new一个Set得到实例的时候传入数组做参数,得到Set的实例,然后将这个Set实例强转为数组。

function unique2(arr) {
    let s1 = new Set(arr)
    return Array.from(s1)
}

你可能感兴趣的:(如何实现数组去重)