通常我们用的最多的就是把一个无规则的数组按照从大到小或者从小到大的顺序排列,然而有的时候我们可能会遇到将一个有序的数组打乱,实现随机排序的效果,这就是我今天要给 大家介绍的内容了;
首先我在百度上寻找了一番,发现一个比较普遍的方法
1 function randArray(arr){ 2 return arr.sort(function(){ 3 return Math.random() - 0.5; 4 }); 5 }
然而,这种方法存在一些问题,甚至是错误,参考链接:https://www.h5jun.com/post/array-shuffle.html
而这里有另外两种比较实用的方法介绍给大家:
方法一:
function randArray(a) { var b = []; while (a.length > 0) { //每次遍历一个a数组中的元素,再删除该元素,直到a数组的长度为0; var index = parseInt(Math.random() * (a.length - 1)); b.push(a[index]); a.splice(index, 1); } return b; }
方法二:
function randArray(a){ var len = a.length; for (var i = 0; i < len - 1; i++) { var index = parseInt(Math.random() * (len - i)); var temp = a[index]; a[index] = a[len - i - 1]; a[len - i - 1] = temp; } return a; }
时间: 2024-10-05 13:32:08