如何随机排序数组?使用多种方式!递归,迭代,洗牌,sort方法!
方式1: 使用sort 方法 ----
1 // 方法1 使用sort 方法 2 var arr = [1,2,3,4,5,6,7,8]; 3 function foo(arr) { 4 var cloneArr = arr.concat(); 5 cloneArr.sort(function (n1,n2) { 6 return Math.random() - 0.5 ; 7 }); 8 return cloneArr; 9 } 10 for (var i= 0 ; i < arr.length ; i++ ){ 11 console.log(foo(arr)); 12 }
方式2:使用递归
<script> var arr = [1,2,3,4,5,6,7,8]; function foo(arr) { //使用concat 复制一个数组中 var cloneArr = arr.concat(); var result = []; (function name(params) { if (!cloneArr.length) return ; var index = Math.floor(Math.random() * cloneArr.length); result = result.concat(cloneArr.splice(index, 1)); arguments.callee(); })() return result; } for (let i = 0; i < arr.length; i++) { console.log(foo(arr)) } </script> </html>
方式3:使用迭代
var arr = [1, 2, 3, 4, 5, 6, 7, 8]; function foo(arr) { //使用concat 复制一个数组中 var cloneArr = arr.concat(); var result = []; var len = cloneArr.length; for(var i= 0 ;i< len ;i++){ var index = Math.floor(Math.random()* cloneArr.length); result = result.concat(cloneArr.splice(index,1)); } return result ; } for (let i = 0; i < arr.length; i++) { console.log(foo(arr)) }
方法4: 洗牌方式
var arr = [1, 2, 3, 4, 5, 6, 7, 8]; function foo(arr) { //使用concat 复制一个数组中 var cloneArr = arr.concat(); for (var i = 0; i < cloneArr.length; i++) { var index = Math.floor(Math.random() * cloneArr.length); var temp = cloneArr[index]; cloneArr[index] = cloneArr[i]; cloneArr[i] = temp; } return cloneArr; } for (let i = 0; i < arr.length; i++) { console.log(foo(arr)) }
综合四种方法 -----认为用第四钟洗牌方式更佳!
一份帮助文档,无论多么仔细,都不会帮助主人多敲一行代码!