有一个数组a=[4,19,23,44,56,1],新建一个数组b,b从a中一次随机选取一个元素,取完为止。用JavaScript实现
1 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
可以用伪随机对a进行洗牌,取任意两个位置的数字进行交换,如此进行n次达到洗牌效果,然后赋值给b。
或者直接按照步骤来,如果不考虑代码效率的话,lodash库提供的数组操作可以使代码更优雅:
var src = [4,19,23,44,56,1];var shuffle = [];while(src.length > 0){ var random_index = Math.floor(Math.random() * src.length);
shuffle.push(src[random_index]);
src = src.filter(function(el, i){ return i != random_index;
});
}想到个更好的伪随机方法,直接随机排序,代码更简洁,运行效率高:
var src = [4,19,23,44,56,1];var shuffle = src;
shuffle.sort(function(){ return Math.floor(Math.random() * 3) - 1;
});添加回答
举报
0/150
提交
取消
