使用输入变量访问数组中的数组的Javascript

时间:2014-11-20 17:44:56

标签: javascript arrays

我正在开发一个表单,根据用户所处的状态不同地处理输入信息。在我的网页上,我有一个下拉列表中的状态列表:

<div class="top-row" title="Select the proper state from the list."> <select name="state-list" class="state-list" id="stateList" > <option value=30>Select State</option> <option value=0>AL</option> <option value=1>AR</option> <option value=2>CA</option> <option value=3>CT</option> <option value=4>DE</option> <option value=5>DC</option> <option value=6>GA</option> </select> </div>

在我的javascript文件中,我创建了一个名为states的数组,并将States作为数组放置:

var state = { AL: [false, true, true, 0], AZ: [false, false, false, 0],
AR: [false, true, true, 0], CA: [false, false, false, 0], 
CT: [false, true, true, 0], DE: [false, true, true, 0],
DC: [false, true, true, 0], GA: [false, true, true, 0]};


我遇到的问题是找到数组值。我做了很多搜索,但我还没找到解决方案。

findState = document.getElementById('stateList').value;
console.log(state.findState[0]);


他们都返回 undefined ,但是&#39; findState&#39;有价值。如何访问状态数组中特定State状态数组的值?

2 个答案:

答案 0 :(得分:4)

您的表达式正在尝试访问findState对象上的state属性,并且没有名为findState的属性。而是使用括号表示法:

console.log(state[findState][0]);

此外,请勿忘记执行正确的空值/未定义检查,以便考虑无法找到值的可能性(例如,如果用户重新选择下拉列表中的第一个选项)。

答案 1 :(得分:1)

你没有创建一个名为state([])的状态,你创建了一个名为state的对象({})。

其中,每个“州”缩写都是关键&amp; true / false选项的数组是值。

对象不保证其内容的顺序,因此您无法通过数字索引搜索它们。 您可以返回state实际上是一个对象数组,或者返工如何访问这些值。

findState未返回预期值。首先需要检查所选索引,然后获取value属性(数值attr)或文本。

var stateList = document.getElementById('stateList'); //the whole list in the DOM
var selectedState = stateList.options[stateList.selectedIndex]; //whichever one is selected
var numericValue = selectedState.value //value='#'
var textAbbrev = selectedState.text //"AR" , "AZ", etc

如果对象使用缩写作为“键”,则需要.text

var optionsArray = state.textAbbrev //should give you the entire array for selected state 
console.log(optionsArray[0]); //should show the 1st true/false value in the selected state's array.

此外,您的HTML缺少“AZ”。