四种数组去重方式

今天看到一个数组去重题目,虽然比较简单,最近刚好回头整理下以前学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}`);

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

添加新评论

  Timeline

我们来自五湖四海,转眼就要各奔东西。
--- updated on 2020年12月1日

  关于博主

计科学生一枚,现在变社畜了,依旧热爱分享,有趣想法也会尝试用代码实现;
建这个博客初衷在于记一些自己笔记和想法,方便自己查阅;
本博客内核采用 Typecho开源代码,平时也可能分享一些开源资源,若侵犯您版权,请联系我删除。

  近期评论

  • 暂无评论

只有脚踏实地的人,才能够说:路,就在我的脚下。

无论你选择做什么,追求完美的程度决定你成就的高度。

这个世界最脆弱的是生命,身体健康,很重要。

上帝说:你要什么便取什么,但是要付出相当的代价。

现在站在什么地方不重要,重要的是你往什么方向移动。