数组去重

在解决数据的时候,经常须要对数组进行去重操作。这里记下最罕用的三种办法。

1. ES6中新增的Set()构造函数和...开展语法

Set是JavaScript规范内置对象,它是ES6(ES2015)里新增的对象。这个对象容许呢存储任何类型的惟一值,无论是原始值或者是对象援用。咱们能够利用它这个个性,用构造函数Set()来对数组进行去重操作。

const arr = ['A', 'B', 'C', 'A', 'B'];const uniqueArr = [...new Set(arr)];console.log(uniqueArr);

输入:
['A','B','C']

2. 应用数组的indexOf()和filter()办法

indexOf()办法会返回数组中能够找到一个给定元素的第一个索引,如果没有,则返回-1。
对于数组中有反复元素的状况,能够联合这一个性,通过filter来遍历数组,依据以下代码来过滤掉反复元素。

const arr = ['A', 'B', 'C', 'A', 'B'];const uniqueArr = arr.filter((item, index) => index === arr.indexOf(item));console.log(uniqueArr);

输入:
['A','B','C']

indexOf()办法在这里是为filter()办法提供判断条件。同理,咱们也能够用其余的形式来进行判断。

3. 应用数组的forEach()和includes()办法

这个办法是先初始化一个空数组,用forEach()遍历原数组,而后将字段一个一个push进去。

const arr = ['A', 'B', 'C', 'A', 'B'];arr.forEach(i => {    if (!uniqueArr.includes(i)) { uniqueArr.push(i) }});console.log(uniqueArr);

输入:
['A','B','C']

这里用includes()来判断uniqueArr里是否曾经有这个字段,你也能够用indexOf()或者其余形式来判断。