js中数组的去重与排序

去重

  1. js数组的去重,排序,各有几种方式,分别是怎么实现的

  去重方法一   arr.splice

         var arr=[1,3,5,6,3,5,6,3,7,9,23,23]

        function a(arr){

                for(var i=0;i<arr.length-1;i++){

                        for(var j=i+1;j<arr.length;j++){

                                if(arr[i]==arr[j]){

                                        arr.splice(j,1);

                                        j--;

                                        }

                                }

                          }

                         return arr;

                        }

                    var arr1 = a(arr)

                    console.log(arr1)

2. 借助新数组,判断新数组中是否存在该元素如果不存在则将此元素添加到新数组中(原数组长度不变但被按字符串顺序排序)

       var arr = [1,3,5,6,3,5,6,3,7,9,23,23]

    function sun(arr){

        var b=[];

        var c;

        arr.sort();

        c=arr[0];

        b.push(arr[0]);

        for(var i=1;i<arr.length;i++){

                if(arr[i] !=c){

                        b.push(arr[i])

                        c=arr[i]

                        }

                }

                return b

        }

                var arr1 = sun(arr)

                console.log(arr1)//[1, 23, 3, 5, 6, 7, 9]

3,创建一个新数组,判断新数组中是否存在该元素如果不存在则将此元素添加到新数组中

 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5];

        function norepeat(arr){

            var temp =[];

            for(var i=0;i<arr.length;i++){

                if(temp.indexOf(arr[i]) == -1){

                    temp.push(arr[i]);

                }

            }

            return temp;

        }

    var arr2=norepeat(arr);

    console.log(arr2);//[1, 23, 3, 5, 6, 7, 9, 8]

4,借助indexOf()方法判断此元素在该数组中首次出现的位置下标与循环的下标是否相等

 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5];

   function norepeat(arr) {

       for (var i = 0; i < arr.length; i++) {

           if (arr.indexOf(arr[i]) != i) {

               arr.splice(i,1);//删除数组元素后数组长度减1后面的元素前移

               i--;//数组下标回退

           }

       }

       return arr;

   }

   var arr2 = norepeat(arr);

   console.log(arr2);                 //[1, 23, 3, 5, 6, 7, 9, 8]

5,利用数组中的filter方法

 var arr = ["apple","banana","pear","apple","orange","orange"];

   var arr2 =arr.filter(function(value,index,self){

       return self.indexOf(value) ===index;

   });

   console.log(arr2);   //["apple", "banana", "pear", "orange"]

排序

1.sort 方法 (a-b正向    b-a 反向)

        var arr=[3,1,5,8,28]

        //正向 a-b

        var arr1=arr.sort(function  (a,b) {

                return a-b;

        })

        console.log(arr1) //[1,3,5,8,28];

        //反向 b-a

        var arr2=arr.sort(function  (a,b) {

                return b-a;

        })

                console.log(arr2) //[28,8,5,3,1]

           2.冒泡排序

        var arr=[3,1,5,8,28]

        function sortArr(arr){

           for(let i=0; i<arr.length; i++){

                 //arr.length-i 保证每次比较都会少比较一位(因为最大的一位已经找出,放在了最后)

           for(let j=0; j<arr.length-i; j++){

           if(arr[j] > arr[j+1]){

          let temp = arr[j];

          arr[j] = arr[j+1];

          arr[j+1] = temp;

                           }

                    }

          }

        return arr

}

         var arr1 = sortArr(arr)

             console.log(arr1)

    3.选择排序

var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5];

function selectSort(arr){

    for(var i=0;i<arr.length;i++){

        //设置当前范围最小值和索引

        var min = arr[i];

        var minIndex = i;

        //在该范围选出最小值

        for(var j=i+1;j<arr.length;j++){

            if(min>arr[j]){

                min = arr[j];

                minIndex = j;

            }

        }

        //将最小值插入

        arr.splice(i,0,min);

        //将原来位置的最小值删除

        arr.splice(minIndex+1,1);

    }

        return arr

}

    var arr1=selectSort(arr)

console.log(arr1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值