我是Java Script的新手。我有一个像这样的数组,
var red = [10, 20, 30];
var blue = [11, 21, 31];
var green = [12, 22, 32];
var userSelect = $("#Color").val();
此处userSelect
应为“红色”,“蓝色”或“绿色”。我试图从用户输入字符串中获取数组。就像,如果他们输入字符串“green”,我会向他们显示绿色数组。我到目前为止所尝试的是,
all = [red, blue, green];
desiredArray = all[userSelect];
但它不起作用。有人可以指出我正确的方向吗?提前谢谢。
答案 0 :(得分:2)
这不起作用,因为数组没有关于变量名的上下文。
你的所有人都会看起来像[[1,2,3],[4,5,6],[7,8,9]]
。它不懂红色,绿色或蓝色。
您可以做的是在对象中分配这些内容。
var all={
"red": red,
"green":green,
"blue": blue
}
desiredArray = all[userSelect];
答案 1 :(得分:1)
将值存储在object而不是
array
中,以便您可以使用bracket notation([])
使用对象的key
来引用该值。当要动态确定属性名称时(在运行时之前未确定属性名称),此表示法也非常有用。
试试这个:
var red = [10, 20, 30];
var blue = [11, 21, 31];
var green = [12, 22, 32];
var userSelect = $("#Color").val();
var all = {
red: red,
blue: blue,
green: green
};
$('#Color').on('change', function() {
alert(all[this.value]);
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<select id='Color'>
<option value='red'>Red</option>
<option value='green'>Green</option>
<option value='blue'>Blue</option>
</select>
&#13;
答案 2 :(得分:1)
这也可以:只需获取用户的字符串并测试它是否匹配。缺点是用户可能拼错或选择不存在的选项。
var red = [10, 20, 30];
var blue = [11, 21, 31];
var green = [12, 22, 32];
var userSelect = prompt("Choose red, green, or blue");
switch(userSelect) {
case 'green':
alert('you chose green: ' + green);
break;
case 'red':
alert('you chose red: ' + red);
break;
case 'blue':
alert('you chose blue: ' + blue);
break;
default:
alert('check your spelling...');
}
&#13;