js数组随机打乱输出,直接上代码:
[runcode]
[/runcode]
主要是用到js里面2个现成方法: sort() & Math.random()
实现思路解析:
sort()可对数组进行排序。
它是这样工作的:每次从数组里面挑选两个数进行运算比对,如果传入的参数是0,两个数位置不变;
如果参数小于0,两个数就交换位置(升序排序);
如果参数大于0,两个数就不交换位置(降序排序)。
接下来用后面的数字跟下一个进行比较,这样循环进行排序。
Math.random()可生成0~1之间的随机数。
恰好,我们利用了这一点使用了0.5 - Math.random(), 这个运算的结果要么是大于0,要么是小于0,取0.5就各占50%的概率,这样要么交换位置,要么不交换位置,这样就达到数组随机排序的效果啦!
但上面的代码是直接操作原数组的,换句话说:如果要保留原数组,上面代码是不符合需求的!
完整需求:js数组随机打乱输出(但要保留原数组)
改进代码:
[runcode]
[/runcode]
改进代码,思路解析:
还是用到sort() & Math.random()2个原生js方法,只是先根据原数组长度生成一个临时索引数组,再用sort()打乱索引数组顺序,然后用索引数组元素作为临时数组tempArr的下标,用for循环遍历原数组给tempArr数组赋值。
好了,这就是满足需求的最原始的代码了,要想让代码看上去更高大上点,可以自己加个函数封装下,或直接放入Array.prototype扩展下数组原生方法都可!