问题并不复杂。从名称数组中随机记录名称。
我的解决方案就是这样。
var names = [ 'nick', 'rock', 'danieel' ];
function randPicker(names) {
var randNum = Math.floor((Math.random() * 10));
var name = randNum <= (names.length - 1) ? console.log(names[randNum]) : randPicker(arguments[0]);
};
在我看来,这段代码并不那么漂亮,因为我非常确定有更好的方法可以更快地执行。这是真的吗?
答案 0 :(得分:1)
更好的方法是让函数返回数组的随机元素并修复它的获取:
function randPicker(a) {
return a[Math.random() * a.length | 0];
}
测试:
function randPicker(a) {
return a[Math.random() * a.length | 0];
}
var names = ['nick', 'rock', 'danieel'];
for (var q=0; q<16; ++q) {
console.log(randPicker(names));
}
答案 1 :(得分:1)
您可以立即获取randNum以获取姓名:
var names = [ 'nick', 'rock', 'danieel' ];
function randPicker(names) {
var randNum = Math.floor((Math.random() * names.length));
var name = console.log(names[randNum]);
};
答案 2 :(得分:0)
您可以使用
var names = [ 'nick', 'rock', 'danieel' ];
function randomPicker(names) {
return names[Math.floor(Math.random() * (names.length+1))];
}
<强>解释强>
Math.random()
返回范围[0,1]中的数字
将其乘以array + 1
的长度,以获得范围[0,长度]中的数字和小数。
最后使用Math.floor
将其舍入为整数。