JS不全记录 - 数组去重方法

85 阅读1分钟

数组去重的方式

// 重复元素的数组
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类型去重也有效

\