• js 数组去重


    总结一些数组去重,首先定义一个数组 var arry1=[1,5,6,4,8,4,5,5,40,4,50,7,4,55,6,5,444,5,4,4,2,4,5,7,8,8];

    1、最常用的,新建数组利用循环进行数组比对,小数组可以,大的性能不佳。

        function removeDuplicatedItem1(ar)
        {
            var rest=[];
            for(var i=0;i<ar.length;i++){
                if (rest.indexOf(ar[i])==-1){
                    rest.push(ar[i])
                }else {
                    console.log(1)
                }
            }
            return rest;
        }
       console.log(JSON.stringify(removeDuplicatedItem3(arry1)))  //[1,5,6,4,8,40,50,7,55,444,2]

    2、推荐使用的,利用对象保存数组for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入对象中。每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。

        function removeDuplicatedItem2(ar)
        {
            var rest=[];
            var object={};
            for(var i=0;i<ar.length;i++){
                if (!object[ar[i]]){
                    rest.push(arry1[i])
                    object[ar[i]]=1
                }else {
                    console.log(1)
                }
            }
            console.log(JSON.stringify(object))
            return rest;
        }
    console.log(JSON.stringify(removeDuplicatedItem3(arry1)))  //[1,5,6,4,8,40,50,7,55,444,2]
     

    3、利用数组下标和forEach()进行比对,其实主要利用到indexOf(),返回该数在数组中第一次出现的位置这一特性。

        function removeDuplicatedItem3(ar)
        {
            var rest=[];
            ar.forEach(function (p1, p2, p3) {
                if(ar.indexOf(p1)===p2){
                    rest.push(p1)
                }
            })
            return rest;
        }
    console.log(JSON.stringify(removeDuplicatedItem3(arry1)))  //[1,5,6,4,8,40,50,7,55,444,2]
     

    4、先进行排序,这个其实用 的比较少,主要是因为改变了数组的顺序。

        function removeDuplicatedItem4(ar)
        {
            ar.sort();
            var rest=[];
           var end=ar[0];
            for(var i=1;i<ar.length;i++){
                if (ar[i]!=end){
                    rest.push(ar[i]);
                    end=ar[i];
                }else {
                    console.log(1)
                }
            }
            return rest;
        }
    console.log(JSON.stringify(removeDuplicatedItem3(arry1)))  //[1,5,6,4,8,40,50,7,55,444,2]
     
  • 相关阅读:
    接口类和抽象类
    生成器和迭代器
    装饰器
    KMP算法(java,c++)
    java EE
    XML
    SQL语法
    单元测试
    JDBC
    SpringCloud
  • 原文地址:https://www.cnblogs.com/yuanzhiguo/p/7716676.html
Copyright © 2020-2023  润新知