面试题 - js乱序数组
将此数组乱序
var arr = [0,1,2,3,4,5,6];
解决思路:
- 随机生成索引,然后将原数组数据进行换位
方案一
var arr = [0,1,2,3,4,5,6];
var len = arr.length;
for(var i=0;i<len;i++) {
var index = Math.floor(Math.random()*(len-i));
var tem = arr[index];
arr[index] = arr[len-i-1];
arr[len-i-1] = tem;
}
console.log(arr);
方案二
var arr = [0,1,2,3,4,5,6];
function f2(arr1) {
var arr2 = [];
while(arr1.length>0){
var index = Math.floor(Math.random()*arr1.length);
arr2.push(arr1[index]);
arr1.splice(index,1);
}
return arr2;
}
console.log(f2(arr));