<script> var a = [1,2,3,4,5]; var newa = []; function zz(){ for(var i=0; len=a.length; i++){ var j = Math.floor(Math.random()*a.length); newa[i]=a[j]; a.splice(j, 1); } console.log(newa); } zz(); </script>
注:a 是需要重排的数组。
在维基百科Fisher-Yates shuffle提到了一种方式:
将数组倒序循环取得随机位置来做位置交换
<script> var a = [1,2,3,4,5]; function zz(){ for(var i=a.length-1; i>=0; i--){ var j = Math.floor(Math.random()*a.length); var newa = a[i]; a[i] = a[j]; a[j] = newa; } console.log(a); } zz(); </script>