sort

2021-02-15  本文已影响0人  Iterate

sort 判断是根据 返回正负来排序的
正的在最后面插入
负的在最前面插入

var arrA = [6,2,4,3,5,1];
arrA.sort( function(x, y) {
  if (x % 2 ==0) return 1;
  if (x % 2 !=0) return -1;
});
document.writeln(arrA); //输出:1,5,3,6,2,4

JS生成随机打乱数组的方法示例

方法一:最精简代码的打乱方法

// An highlighted block
var arr = [4,1,67,12,45,121,3];
arr.sort(function() {
    return (0.5-Math.random());
});
console.log(arr);

这里介绍下sort()函数,在JS中Array对象里内置了一个函数:

arrayobj.sort([sortfunction])

此方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。

sortFunction为可选项。

是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。
sortFunction方法有两个参数。分别代表每次排序比较时的两个数组项。sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。

方法二:这个方法打得比较乱

var Arr = [4,1,67,12,45,121,3];
function randArr(arr) {
    for (var i = 0; i < arr.length; i++) {
        var iRand = parseInt(arr.length * Math.random());
        var temp = arr[i];
        arr[i] = arr[iRand];
        arr[iRand] = temp;
    }
    return arr;
}
//测试:
console.log(randArr(Arr));

随机播放列表案例
首先要明确,我们对播放列表打乱的前提是不能对原数组进行更改的。

//获取min和max之间的一个随机整数[5,100];
function getRandomInt(min,max){
    return Math.floor(Math.random()*(max-min+1))+min;
}

//打乱数组
function shuffle(arr){
    let _arr = arr.slice(); //slice不会影响原来的数组,但是splice就会影响原来的arr数组
    for (let i = 0; i<_arr.length; i++;){
        let j = getRandomInt(0,i);
        let t = _arr[i];
        _arr[i] = _arr[j];
        _arr[j] = t;
    }
    return _arr;
}
上一篇下一篇

猜你喜欢

热点阅读