Skip to content

js四种数组去重方式

323字约1分钟

JavaScript

2020-12-04

今天看到一个数组去重题目,虽然比较简单,最近刚好回头整理下以前学js笔记,发现方法还是挺多的,

暂时想得到就这四种了。

代码比较简单,按我学的的顺序写的。

// 数组去重
let aryOld = [1, 2, 2, 3, 3, 4];
let aryNew = [];

//其实遍历可以用ES5增加新方法:forEach,
//前面两种不用新方法就用内置方法,let和``就不纠结了,和主要任务不冲突。
// 1.最原始方法
for (let i = 0; i < aryOld.length; i++) {
    let flag = true;
    for (let j = i + 1; j < aryOld.length; j++) {
        (aryOld[i] == aryOld[j]) && (flag = false);
    }
    flag && aryNew.push(aryOld[i]);
}
console.log(`第一种结果:${aryNew}`);
aryNew = []


//2.Array内置方法:indexOf() or lastIndexOf();
for (let i = 0; i < aryOld.length; i++) {
    aryNew.indexOf(aryOld[i]) == -1 && aryNew.push(aryOld[i]);
}
console.log(`第二种结果:${aryNew}`);
aryNew = []
//3.ES5 forEach + slice()(返回新数组) or splice(改变原数组)
aryOld.forEach(function (value, index, arr) {
    for (let i = index + 1; i < arr.length; i++) {
        value == arr[i] && aryOld.splice(i, 1) && i--;
    }
})
console.log(`第三种结果:${aryOld}`);
aryNew = []
aryOld = [1, 2, 2, 3, 3, 4];
//4.ES6 Set 最简单一种方式
let ary2 = new Set(aryOld);
aryNew = [...ary2];
console.log(`第四种结果:${aryNew}`);

代码注释比较简单,果然越学到后面越简单,就是兼容性问题比较烦。