// here goes random number generator
// arrays with info
foo1 = ["This is true!", true, false];
foo2 = ["This is false!", false, false];
foo3 = ["This is probably false!", false, false];
foo4 = ["This is probably true!", true, false];
foo5 = ["This might be true!", true, false];
// choosing a random array name
fooID = "foo" + randomNumber(1, 5);
/* How would I make this work? -
alert(<value of fooID>[0]);
<value of fooID>[2] = true;
*/
&#13;
我尝试做的是选择一个随机数组(所有都被命名为foo__),然后用它做点什么。
也许我甚至可以以完全不同的方式定位数组,甚至不需要fooID变量?我在StackOverflow中looked around发现我应该使用字典,但我真的不知道如何。
答案 0 :(得分:4)
您可以只使用Array
,因为您的数据是可迭代的,您需要一个随机数来获取结果。
super()
&#13;
function getRandomElement(array) {
return array[Math.floor(Math.random() * array.length)]
}
var foos = [
["This is true!", true, false],
["This is false!", false, false],
["This is probably false!", false, false],
["This is probably true!", true, false],
["This might be true!", true, false]
],
i;
for (i = 0; i < 10; i++) {
console.log(getRandomElement(foos)[0]);
}
&#13;
答案 1 :(得分:2)
您可以使用bracket notation,因为变量是全局定义的,window[/* array variable identifier */]
// here goes random number generator
// arrays with info
foo1 = ["This is true!", true, false];
foo2 = ["This is false!", false, false];
foo3 = ["This is probably false!", false, false];
foo4 = ["This is probably true!", true, false];
foo5 = ["This might be true!", true, false];
// choosing a random array name
fooID = window["foo" + 1 /* randomNumber(1, 5) */ ];
console.log(fooID);
答案 2 :(得分:2)
也许我甚至可以以完全不同的方式定位数组,
var foo = [
["This is true!", true, false],
["This is false!", false, false],
["This is probably false!", false, false],
["This is probably true!", true, false],
["This might be true!", true, false]
];
var fooItem = foo[Math.trunc(Math.random()*5)];
console.log(fooItem);
确实,只需在数组中创建一个数组。
答案 3 :(得分:1)
基本上您可以使用brackets property notation来实现所需,因为您可以在属性名称中使用变量或任何其他有效的JS表达式元素。
在您的示例中,foo1到foo6作为全局命名空间中的变量存在,这意味着它们全部附加到浏览器中的b
对象。
因此,您要在变量中存储要访问的变量的名称,例如名称window
,然后像这样访问相应的变量:
accessor
window[accessor]