美文网首页
记录下js几种常见的数组排序和去重的方法

记录下js几种常见的数组排序和去重的方法

作者: mills_han | 来源:发表于2018-01-24 11:23 被阅读0次

    冒泡排序

    var arr = [1, 9, 4, 50, 49, 6, 3, 2];
    function test(){
      for (var i = 0; i < arr.length - 1; i++){
        for (var j = i + 1; j < arr.length; j++){
          var tempi = arr[i]; //获取第一个值,并与后一个值比较
          var tempj = arr[j];
          if (tempi > tempj){
            arr[i] = tempj;
            arr[j] = tempi;//如果前一个值比后一个值大,那么相互交换
          }
        }
      } 
      console.log(arr); //return arr;
    }
    test(arr);  //[1, 2, 3, 4, 6, 9, 49, 50]
    

    简单粗暴的使用sort()方法进行升序、降序排列

    var arr = [1, 9, 4, 50, 49, 6, 3, 2];
    function test(arr) {
      if( arr.length < 1){
        return      //如果数组长度小于1,直接返回,没有比较的必要
      }
     return  arr.sort(sortNum)
    };
    function sortNum(a,b) {
        return a - b;   //倒序就是b-a
    }
    test(arr)  //[1, 2, 3, 4, 6, 9, 49, 50]
    

    还可以利用sort 方法的返回值,做数组的随机排序

    var arr = [1, 9, 4, 50, 49, 6, 3, 2];
    
    function test(arr) {
        if(arr.length < 1) {
            return 
        }
        return arr.sort(randomSrot)
    }
    function randomSrot(a,b) {
        return Math.random() > 0.5 ? -1 : 1;
    }
    test(arr);  
    //利用Math.random()方法可以返回0~1之间的随机数,然后和0.5比较,来决定返回值是1还是-1
    

    数组去重的几种方法

    1.最常使用的indexOf()
    var arr = [1,1,1,12,12,13,13,8,8,9,7,5];
    function test(arr) {
        var result = []; //用来存放新数组
        var len = arr.length;
        for(var i = 0; i < len; i++) {
            if(result.indexOf(arr[i])== -1) {   //如果新数组查询不到当前的数组成员,就把他添加进新数组
                result.push(arr[i])
            }
        }
        return result;
    }
    test(arr);//[1, 12, 13, 8, 9, 7, 5]
    
    2.最简洁的方法,使用es6 的新数据类型set()
    var arr = [1,1,12,12,13,13,8,8,9,7,5];
    var arr2 = [...new Set(arr)];   //[1, 12, 13, 8, 9, 7, 5]
    

    相关文章

      网友评论

          本文标题:记录下js几种常见的数组排序和去重的方法

          本文链接:https://www.haomeiwen.com/subject/ybbyaxtx.html