zoukankan      html  css  js  c++  java
  • 记录下js几种常见的数组排序和去重的方法

    冒泡排序

    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]
  • 相关阅读:
    cocos2d-x Tests讲解 Particle System(粒子系统)
    c++ 知识点
    详解C/C++函数指针声明
    VS中的路径宏 vc++中OutDir、ProjectDir、SolutionDir各种路径
    cocos2d-x学习知识点记录
    Ogre实现简单地形
    Ogre内部渲染流程分析系列
    gcc/g++编译
    gcc和g++的区别
    Hack with rewrite
  • 原文地址:https://www.cnblogs.com/plBlog/p/11982152.html
Copyright © 2011-2022 走看看