• 技术文章 >web前端 >js教程

    javascript数组去重怎么做

    青灯夜游青灯夜游2021-09-07 17:59:39原创165

    方法:1、利用“[...new Set(arr)]”语句;2、利用“Array.from(new Set(arr))”语句;3、利用filter和indexOf函数;4、利用双重for循环,检查值是否重复,如果有重复就使用push()删除。

    本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

    方法1:[…new Set(arr)]

    const arr = [1, 2, 3, 2, 3];
    [...new Set(arr)]; // [1, 2, 3]

    方法2:Array.from(new Set(arr))

    const arr = [1, 2, 3, 2, 3];
    Array.from(new Set(arr)); // [1, 2, 3]

    由于 Set 中的元素是唯一的,无论是原始值或者是对象引用,所以可以通过将数组转换成 Set 对象来实现去重

    Array.from方法可以将 Set 对象转换成数组。

    方法3:利用filter+ indexOf

    function unique(arr) {
      return arr.filter(function(item, index, arr) {
        //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
        return arr.indexOf(item, 0) === index;
      });
    }
    var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
    console.log(unique(arr))
    //[1, "true", true, 15, false, undefined, null, "NaN", 0, "a", {…}, {…}]

    方法4:双重 for 循环

    最容易理解的方法,外层循环遍历元素,内层循环检查是否重复

    当有重复值的时候,可以使用 push(),也可以使用 splice()

    function distinct(a, b) {
        let arr = a.concat(b);
        for (let i=0, len=arr.length; i<len; i++) {
            for (let j=i+1; j<len; j++) {
                if (arr[i] == arr[j]) {
                    arr.splice(j, 1);
                    // splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一
                    len--;
                    j--;
                }
            }
        }
        return arr
    }

    但这种方法占用的内存较高,效率也是最低的

    1.png

    方法5:for...of + includes()

    双重for循环的升级版,外层用 for...of 语句替换 for 循环,把内层循环改为 includes()

    先创建一个空数组,当 includes() 返回 false 的时候,就将该元素 push 到空数组中

    类似的,还可以用 indexOf() 来替代 includes()

    function distinct(a, b) {
        let arr = a.concat(b)
        let result = []
        for (let i of arr) {
            !result.includes(i) && result.push(i)
        }
        return result
    }

    2.png

    【推荐学习:javascript高级教程

    以上就是javascript数组去重怎么做的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:javascript 数组去重
    上一篇:javascript怎么将小数转换为整数 下一篇:javascript如何实现下载
    线上培训班

    相关文章推荐

    • javascript怎么实现99乘法表• javascript中单引号和双引号的区别是什么• javascript怎么将字符串全部替换• javascript和jquery之间有什么区别• javascript中有全局函数吗• javascript怎么将时间戳转换成天数

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网