javascript数组不重复随机打乱

Array.prototype.random=function(){
    for(var i=0;i<this.length;i++){
        var iNum=parseInt(Math.random()*this.length);
        var oNow=this[i];    //在未进行替换操作前记录下当前数组项
        this[i]=this[iNum];
        this[iNum]=oNow;
    }
    return this;
};

var arr1=[1,2,3,4,5,6,7,8,9,10];
var arr2=['北京','天津','上海','河北','重庆'];
document.write(arr1.random()+'<br/>');
document.write(arr2.random());

由于原生没有提供这方法,我们就直接在原型上来添加吧,这样new出来的就都可以用了。。。

其实原理非常简单,只是循环整个数组时,替换当前项与随机项的位置而已,唯一值得一提的就是一定要在未进行替换操作前用一个变量保存下当前项:

var iNow=this[i];

这句非常重要。。。。

原文地址:https://www.cnblogs.com/hejia/p/2952307.html