常用的数组去重方法

93 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第1天,点击查看活动详情

image.png

前言

这篇文章介绍了Js五种常用的数组去重方法、具有一定的参考价值、需要的小伙伴可以参考一下。

一、利用ES6中的Set去重

Set是ES6新增的数据结构、是去重方法中最简便、快捷的方法

var arr = [1, 2, 3, 1, 2, 5, '你好', '你好', 'a', null, {}, {}, false, true, 'true', true,]
function deWeight(arr) { // 封装方法,传入去重对象 
    return ([...new Set(arr)]) // 利用 new Set方法,返回去重后的新数组,不改变原有数组, console.log(deWeight(arr)); // [1, 2, 3, 5, '你好', 'a', null, {}, {}, false, true, 'true']

二、ES6 Array.from()方法

var arr = [1, 2, 3, 1, 2, 5, '你好', '你好', 'a', null, {}, {}, false, true, 'true', true,] 
function deWeight(arr) { // 封装方法,传入去重对象 
    return (Array.from(new Set(arr))]) // 利用 new Set方法,返回去重后的新数组,不改变原有数组, console.log(deWeight(arr)); // [1, 2, 3, 5, '你好', 'a', null, {}, {}, false, true, 'true']

三、利用双重for循环+splice去重

var arr = [1, 2, 3, 1, 2, 5, '你好', '你好', 'a', null, {}, {}, false, true, 'true', true,]
function deWeight(arr) {
    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--    
            }     
        }; 
    }    
    return arr 
} 
console.log(deWeight(arr)); // [1, 2, 3, 5, '你好', 'a', null, {}, {}, false, true, 'true']

四、利用filter + indexOf查找元素去重

var arr = [1, 2, 3, 1, 2, 5, '你好', '你好', 'a', null, {}, {}, false, true, 'true', true,]
function deWeight(arr) { 
    return arr.filter((item, index) => { // filter方法过滤、如果返回值为true、则该元素被保留、否则删除  
        return arr.indexOf(item) === index // indexOf方法返回元素在数组中的位置、如果不存在就会返回-1     
    }) 
} 
console.log(deWeight(arr)); // [1, 2, 3, 5, '你好', 'a', null, {}, {}, false, true, 'true']

五、includes方法去重

查询数组是否包含该元素、如果不包含就push进去

var arr = [1, 2, 3, 1, 2, 5, '你好', '你好', 'a', null, {}, {}, false, true, 'true', true,] 
function deWeight(arr) {    
    let newArr = []  
    for (let i = 0; i < arr.length; i++) {    
        if (!newArr.includes(arr[i])) { 
            newArr.push(arr[i])   
        } 
    };      
    return newArr 
} 
console.log(deWeight(arr)); // [1, 2, 3, 5, '你好', 'a', null, {}, {}, false, true, 'true']

结尾

关于Js数组去重当然还有许多更好的方法、该文章只总结了五种常用的去重方法、对大家会有一定的帮助。