对不起,如果这是一个愚蠢的问题,我是一个javascript noob
我试图指定一个列表来查找随机条目。如何在不使用if / else语句或开关的情况下执行此操作?
var one = ["Japan","Vietnam","Korea"]
var two = ["bleghg","djakd","dasda"]
var three = ["woop","doop","loop"]
function randomItem (list) {
return list[Math.random()*list.length]
}

提前感谢您的帮助!
答案 0 :(得分:1)
要访问列表中的随机位置,您需要根据列表长度生成一个随机数,然后将其舍入,如下所示。无需进行条件测试。
list[Math.floor(Math.random()*list.length)];
要在代码中使用它,您可以使用其中一个列表作为参数调用您的函数。像这样:
console.log(randomItem(one));
答案 1 :(得分:0)
将函数中的list
param替换为列表名称:
randomItem(one)
var one = ["Japan", "Vietnam", "Korea"]
var two = ["bleghg", "djakd", "dasda"]
var three = ["woop", "doop", "loop"]
function randomItem(list) {
// you need to round the random number down
return list[Math.floor(Math.random() * list.length, 10)];
}
var result = randomItem(one);
console.log(result);
答案 2 :(得分:0)
由于@Thomas Juranek已经纠正了你对Math.random的使用,我不会详述。相反,我将回答你关于使用变量名检索变量的问题。
我称之为hack,但在global中声明的变量绑定到window对象。如果仅传递变量名称,则可以通过执行以下操作来检索它:
function getWindowObject(variableName) {
return window[variableName];
}
然而,传递变量肯定更有意义。如果你坚持想要在函数作用域之外声明松散挂起的变量,那么稍微好一点的方法就是将它包装在一个对象中:
var myPersonalScope = {};
myPersonalScope["one"] = [1, 2, 3];
myPersonalScope["two"] = [4, 5, 6];
function getPersonalScopeObject(variableName) {
return myPersonalScope[variableName];
}