如何输入要在函数中使用的变量

时间:2017-01-06 18:39:41

标签: javascript list function

对不起,如果这是一个愚蠢的问题,我是一个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]
  }



 这是我尝试做的简化,在那里我输入现有列表的名称(一,二或三),它将从该列表中获得一个随机项

提前感谢您的帮助!

3 个答案:

答案 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];
}