实现数组去重

63 阅读1分钟

实现数组去重

使用 new Set()

function unique(arr) {
    if (!Array.isArray(arr)) return; // 判断是否是数组
    return [... new Set(arr)]
}

使用 for 循环加 indexOf() 判断(或者 includes() 判断)

function unique(arr) {
    let newArr = [];
    for(let i = 0; i < arr.length; i++) {
        if (newArr.indexOf(arr[i]) === -1) newArr.push(arr[i])
    }
    return newArr;
}

使用 Array.filter() 方法

// Array.filter() 方法,返回的是符合条件的数组,且不改变原始数组
// Array.indexOf() 方法,返回的是符合条件的第一个索引位置,以此可以过滤掉之后的第二个第三个重复项
// 例如 [1, 3, 2, 5, 3, 4].indexOf(3) 返回的索引为 1, 
// 3 在数组中出现两次,索引 1 和 索引 4 都是 3,
// 但是满足条件的只有第一次出现的那个索引为 1 的 3;
// 因为要求满足条件 返回的索引 与 原本数组的 索引相等 
function unique(arr) {
    let newArr = arr.filter((item, index) => arr.indexOf(item) === index);
    return newArr;
}

使用 sort() 排序,然后根据下标判断

function unique(arr){
    let newArr = [];
    for(let i = 0; i < arr.sort().length; i++) {
        if(arr[i] !== arr[i - 1]) {
            newArr.push(arr[i])
        }
    }
    return newArr;
}

验证

const arr = [1,3,5,4,9,8,2,1,4,5,6,9,8,7];
console.log(unique(arr))