思想:
1.洗牌:从第一个数开始到最后一个数,依次和数组中的随机位置互换
2.将数组转为对象,对象随机排序,对象转换为数组
方法一:
Array.prototype.shuffle = function() {
var arr = this;
for (var i = arr.length-1; i >=0; i--) {
var randomIndex = Math.floor(Math.random()*(i+1));
var itemValue = arr[randomIndex];
arr[randomIndex] = arr[i];
arr[i] = itemValue;
}
return arr;
}
方法二:
let [arr,arr1]=[ [1,2,3,"q","2","c"], [] ];
for(var i=0;i<arr.length;i++){ //数组转为对象
let obj={};
obj.key=Math.random();
obj.value=arr[i];
arr1.push(obj)
}
arr1.sort( (a,b) => { //对象排序
return a.key-b.key
})
arr.splice(0, arr.length, arr1.map(item=>item.value)) //对象转为数组
网友评论