今天项目中用到数据随机排列,感觉应该很简单,结果一下子没想起来好的方法,上网搜索一下,感觉写的都好复杂,不过根据其中的一些思路写了下面这段。
整体思路是:随机一个0-数组长度之间的整数作为下标,从数组中取出该下标下的数据存在一个新的数组中,并从该数组中移除,while循环数组长度即可。代码如下:
1 function sort(list) { 2 var result = []; 3 var arr2 = list.concat(); 4 while (arr2.length) { 5 var len = arr2.length; 6 var index = Math.floor(Math.random() * len); 7 result.push(arr2.splice(index, 1)[0]); 8 console.log(len); 9 } 10 return result; 11 } 12 13 //下面是举例应用,数组arr中依次有1-10这10个数字 14 var arr = []; 15 for (let i = 0; i < 10; i++) { 16 arr.push(i + 1); 17 } 18 console.log(sort(arr).toString());//输出这个数组中随机排列的数字