我有一个问题
你能告诉我如何在javascript中打印无序列表吗? 我喜欢这个使用 Math.random 功能,但它没有打印值
var arr=['abc','pqr','mnc'];
for(var i=0;i<arr.length;i++){
console.log(arr[Math.floor((Math.random() * 3) + 1)]) ;
}
http://jsfiddle.net/3s4Lqr0o/1/ 它不打印所有值?
答案 0 :(得分:1)
这里的第一个问题是Math.floor((Math.random() * 3) + 1)
将返回1到3之间的数字。您的数组只有索引0,1和2的元素。所以abc
根本不打印
第二个问题是,无法保证您的计算将仅返回每个数字0,1和2一次。您可能连续三次获得arr[1]
,导致pqr
被打印3次。
我最初投票将此问题标记为How to randomize (shuffle) a JavaScript array?的副本。我的想法是你可以简单地将数组洗牌,然后打印洗牌阵列。但是,由于这个问题已经重新开放,我将提出一个替代解决方案。
arr = ['abc','pqr','mnc'];
while (arr.length > 0) {
var index = Math.floor(Math.random() * arr.length);
console.log(arr[index]);
arr.splice(index, 1);
}
随机选择数组中的一个元素,打印它然后从数组中删除它。重复,直到没有更多元素。