js 数组去重的6种方法

原始数组

let arr = [1, 2, 5, 4, 5, 3, 2, 4, 1]

方法1: 利用数组 includes 过滤

let result = [];
arr.forEach(item => {
    if (!result.includes(item)) {
        result.push(item)
    }
})
console.log(result)

方法2:利用 Set 的唯一性

const result = Array.from(new Set(arr));
console.log(result)

方法3: 利用 map 这种数据结构

const result = [];
const map = new Map();
for (let v of arr) {
    if (!map.has(v)) {
        map.set(v, true);
        result.push(v);
    }
}
console.log(result);

方法4: 两两比较

for (let i = 0; i < arr.length; i++) {
    for (let j = i + 1; j < arr.length; j++) {
        if (arr[i] === arr[j]) {
            arr.splice(j, 1);
            j--;
        }
    }
}
console.log(arr)

方法5: 利用对象过滤

let result = [];
let obj = {};
arr.forEach(item => {
    if (!obj.hasOwnProperty(typeof item + item)) {
        // obj的健必须是字符串,所以把类型加上,区分是数据类型
        obj[typeof item + item] = true;
        result.push(item)
    }
})
console.log(result)

方法6: 利用 filter 过滤,indexOf 查找数组下标

function filterArr(arr) {
    return arr.filter(function (item, index) {
        return arr.indexOf(item) === index
    })
}
console.log(filterArr(arr))
Leave a Reply

Your email address will not be published. Required fields are marked *