zoukankan      html  css  js  c++  java
  • js数组排序和打乱

    js数组根据不同的业务需求,会要求数组有序或者无序,记录一下流传较广,通用性较强的排序和乱序方法。

    数组排序:

    arr.sort(function(a,b){//从小到大

          return a-b;【return b-a;//从大到小】

    });

    乱序数组:

    arr.sort(function(a,b){//一般随机

       return  Math.random() - 0.5;

    });

    先看用到的sort(),sort()方法会调用每个数组项的 toString() 转型方法,原理是基于字符串(字符编码)的比较排序。应用方式:arrayObject.sort(sortby)【sortby:排序方式,函数】,返回原数组的引用,不生成副本。

    排序函数的返回值决定位置:

    若 sortby(a, b) < 0 ,return [a,b];
    若 sortby(a, b) = 0 , return [a,b] or [b,a];
    若 sortby(a, b) > 0 , return [b,a];

    关于数组打乱方法,在网上看到一个更搞笑的处理方法,Fisher–Yates shuffle 洗牌算法

    【https://gaohaoyang.github.io/2016/10/16/shuffle-algorithm/,详细说明的地址】

    if (!Array.prototype.shuffle) {

        Array.prototype.shuffle = function() {

          for(var i = this.length-1;i>=0;i--){

                 var index = Math.floor(Math.random()*(i+1));//重点就是随机下标

                 var arrItem = this[index]; 

                 this[index] = this[i];

                 this[i] = arrItem; 

           } 

           return this; 

        }; 

    }

    arr.shuffle();

    还有一种不太友好的写法

    if (!Array.prototype.shuffle) {

       Array.prototype.shuffle = function() { 

       for(var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j],    this[j] = x); 

        return this; 

       }; 

    }

    arr.shuffle();






    转载于:https://juejin.im/post/5b45d663518825196b01c7f6

  • 相关阅读:
    python入门基础知识
    python数据类型之集合
    python的文件操作
    python 整型,布尔值,字符串相关
    字典和解构初识
    python的小数据池和深浅拷贝
    学习相关的基础知识
    深入理解C指针之一(概念)By kmalloc
    mknod命令及低级文件操作函数
    深入理解C指针之二(数组和指针的关系)By kmalloc
  • 原文地址:https://www.cnblogs.com/twodog/p/12136485.html
Copyright © 2011-2022 走看看