1. 利用sort方法
例如为array数组排序可以使用如下方法,比较的原理为如果a-b > -1 ,则a排在b前面,否则a排在b后面
let arr=[1,12,34,5,6];
arr.sort((a,b)=>a-b);
console.log('arr',arr);// 返回[1, 5, 6, 12, 34]
所以,实现数组的随机排序,我们可以随机生成一个0-1之间的数跟0.5相比较,如果大于0.5则返回-1,否则返回1;
let arr=[1,'12m',34,'we','5uw','w6'];
const randomSort=()=>{
return Math.random() > 0.5 ? -1 : 1;
}
arr.sort(()=>randomSort());
console.log('arr',arr);
2.创建一个新的数组,从原数组中随机抽取一个元素插入到新数组中,然后返回新数组
let arr=[1,'12m',34,'we','5uw','w6'];
const randomSort=(origin_array)=>{
// 先拷贝一份到临时数组里
let temp_array = origin_array.map(item=>item);
let result_array=[];
while(temp_array.length) {
// 随机生成[0,temp_array.length)之间的整数
let randomIndex = Math.floor(Math.random()*temp_array.length);
console.log('randomIndex',randomIndex);
result_array.push(temp_array[randomIndex]);
temp_array.splice(randomIndex,1);
}
return result_array;
}
const result = randomSort(arr);
console.log('result',result);
3.数组内的元素随机替换位置(类似洗牌算法)
let arr=[1,'12m',34,'we','5uw','w6'];
const randomSort=(origin_array)=>{
let len = origin_array.length;
let temp='';
let randomIndex=0;
for(let i=0;i<len;i++) {
//随机生成[i,len)的随机整数
randomIndex = Math.floor(Math.random()*(len-i)+i);
temp = origin_array[i];
origin_array[i] = origin_array[randomIndex];
origin_array[randomIndex] = temp;
}
return origin_array;
}
let result = randomSort(arr);
console.log('result',result)