js随机打乱一个数组

//1
function shuffle(array) {
    var currentIndex = array.length, temporaryValue, randomIndex;
    /*method1--bigin*/
    while (0 !== currentIndex) {
        randomIndex = Math.floor(Math.random() * currentIndex);
        currentIndex -= 1;
        temporaryValue = array[currentIndex];
        array[currentIndex] = array[randomIndex];
        array[randomIndex] = temporaryValue;
    }
    /*method1--end*/

    /*method2--begin*/
    for(var j, x,i=currentIndex; j=parseInt(Math.random() * i), x = array[--i],array[i] = array[j],this[j] = x);
    /*method2--end*/

    return array;
}
var arr = [2, 11, 37, 42];
arr = shuffle(arr);
console.log(arr);


//2[自定制sort函数]
(function(){
    var count = 100000,arr = [];
    for(var i=0;i<count;i++){
        arr.push(i);
    }
    //常规方法,sort()
    var t = new Date().getTime();
    Array.prototype.sort.call(arr,function(a,b){ return Math.random()>.5 ? -1 : 1;});
    document.write(arr+'<br/>');
    var t1 = new Date().getTime();
    document.write(t1-t);
})()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值