配对多个javascript数组

配对多个javascript数组,javascript,arrays,Javascript,Arrays,我正试图解决我在使用多个javascript数组时遇到的一个问题 因此,基本上我想要的结果是将下拉框的数组与我将显示的其他数组中的其他值相匹配 数组包含不同的值,但顺序是最重要的 假设用户选择了数字4,那么我需要在array2中选择32,在array3中选择38 我们乐意接受任何建议,谢谢 从第一个数组中获取索引,使用 从具有该索引的其他数组中获取值,如下所示 console.log(array2[index], array3[index]); var index = array1.index

我正试图解决我在使用多个javascript数组时遇到的一个问题

因此,基本上我想要的结果是将下拉框的数组与我将显示的其他数组中的其他值相匹配

数组包含不同的值,但顺序是最重要的

假设用户选择了数字4,那么我需要在array2中选择32,在array3中选择38

我们乐意接受任何建议,谢谢

从第一个数组中获取索引,使用

从具有该索引的其他数组中获取值,如下所示

console.log(array2[index], array3[index]);
var index = array1.indexOf(4);
if (index !== -1) {
    console.log(array2[index], array3[index]);
} else {
    console.log("Invalid element selected");
}
注意:如果在数组中找不到要搜索的值,indexOf将不会失败并出现错误,但它只返回-1。因此,您可能希望在使用它访问其他数组中的元素之前进行检查,如下所示

console.log(array2[index], array3[index]);
var index = array1.indexOf(4);
if (index !== -1) {
    console.log(array2[index], array3[index]);
} else {
    console.log("Invalid element selected");
}

任何时候你都有多个并行数组,你应该考虑把它重构成一个对象数组。这样你就不用担心保持同步了。例如:

var myArray = [ { val1: 2, val2: 30, val3: 36 }, { val1: 4, val2: 32, val3: 38 }, ...];
现在要找到4的值,您可以简单地执行以下操作,尽管简单的for循环可能更有效,因为您知道只有一个结果:

var myValues = myArray.filter(function(item) { return item.val1 === 4 });
然后访问myValues[0].val2和myValues[0].val3

或者,如果总是按第一个值查找,则可以将其用作映射到其他两个值的对象的键。比如:

var myArray = { 2: { val2: 30, val3: 36 }, 4: { val2: 32, val3: 38 },...};
现在,如果您想要4的其他两个值,您可以简单地:

var value2 = myArray[4];
var value3 = myArray[4];
这样做,

var valueFromSelect = 4;


var array1 = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22];
var array2 = [30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50];
var array3 = [36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56];

for(var i = 0; i < array1.length; i++){
   if(valueFromSelect == array1[i]){
       console.log(array2[i], array3[i]);
       break;
   }
}

我建议您不要使用indexOf,它与IE不兼容。<9阅读更多关于它的信息。

假设这些不仅仅是数组和值,而且您有实际的下拉框:

访问选定值不仅可以使用,还可以使用select1[select1.selectedIndex]。我们感兴趣的是That.selectedIndex,您可以在其他两个下拉列表的选项集合或数组及其值上等效使用它:

select2.options[select1.selectedIndex].value
array2[select1.selectedIndex]
select3.options[select1.selectedIndex].value
array3[select1.selectedIndex]

如果通过“选项”集合访问它们,则需要确保实际选中了一个选项select1.selectedIndex!=-1,否则会出现异常。

只需使用array2即可[array1.indexOf4?2a.测试是否实际找到了该数字,即index!=-1-尽管数组访问会在此处产生未定义的结果,这可能是desirable@Bergi事实上,OP说用户正在从下拉框中选择值。这就是我留下的原因。哦,对了,但在这种情况下,您可能根本不需要使用indexOf,只需应用select2.选项[选择1.选择索引].value…@Bergi我对DOM不太在行。你能回答这个问题吗?这很简单。我很乐意投票:-我不会使用for..in来迭代其他数组,其中简单的forvar I=0;I