把数组中的元素随机排列
程序员文章站
2022-06-12 21:48:20
...
突然间看到如何把数组中的元素随机排列问题 自己上网查了一下
这个用到了原型的概念 就是给Array 的原型添加了一个方法:
Array.prototype.shuffle=function(){
//var that=this就是将当前的this对象复制一份到that变量中。
var that = this;
//当前的this对象的t属性 等于this对象的长度
this.t = this.length;
//当前的this对象的re 属性为 空数组[]
this.re = [];
for(var i=0;i<this.t;i++){
//利用闭包 来保存变量i
(function(x){
//设置变量 temp 值为 that
var temp = that;
//m 为0到 temp.length 也就是this.length 的随机数
var m = Math.floor(Math.random()*temp.length);
console.log("m = "+m);
//往re数组中加入 元素
that.re[x] = temp[m];
//把原数组下标为m的值删除
that.splice(m,1);
//console.log(that.re[m]);
})(i)
}
return that.re;
}
var arr=["00","11","22","33","44","55","66","77"];
alert(arr.shuffle());