数组去重的方式
// 重复元素的数组
const arr = [1, 2, 2, 'abc', 'abc', true, true, false, false, undefined, undefined, NaN, NaN]
数组indexOf()方法
流程:
创建一个空数组,遍历需要去重的数组,将数组元素放到新数组中,存放前判断新数组中是否含又当前元素,没有则存入。【此方法无法对NaN去重】
indexOf()方法:
返回调用它的String对象中第一次出现的指定值得索引(返回第一次出现值得索引),如果未找到,则返回-1。
function removeDuplicate(arr) {
const newArr = [];
arr.forEach(item =>{
if (newArr.indexOf(item) === -1) {
newArr.push(item);
}
})
return newArr;
}
数组的includes()方法
跟 indexOf 异曲同工,只是用 includes 方法来判断是否包含重复元素。【能检测NaN的重复】
includes()方法:
用来判断一个数组是否包含一个指定的值,包含则返回 true,否则返回 false
function removeDuplicate(arr) {
const newArr = [];
arr.forEach(item => {
if (!newArr.includes(item)) {
newArr.push(item);
}
})
return newArr;
}
利用Set() + Array.from()
Set对象:
值的集合,可以按照插入的顺序迭代它的元素。Set中的元素只会出现一次(Set中的元素是唯一的)
Array.from()方法:
对一个类数组或者可迭代对象创建一个新的、浅拷贝的数组实例
const result = Array.from(new Set(arr));
console.log(result);
// 上述方法对NaN和undefined类型去重也有效
\