数组去重
在解决数据的时候,经常须要对数组进行去重操作。这里记下最罕用的三种办法。
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()
或者其余形式来判断。