2017-01-23 68 views
1

我想创建像一个数组访问二维阵列键 - 值对:生成和使用javascript仅

var fruits[ ]=[ [1] ["Grapes","mango","orange"] , [2] ["banana"], [A] ["Avocado","Apple"] , [P] ["Pear","Papaya","pomegranate","plum"] ]; 

并据此我想用密钥值配对或类似的东西来访问上述阵列。

例如,如果我有值的下拉列表:

<select> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="A">A</option> 
    <option value="P">P</option> 
</select> 

取决于我的选择,就像如果我选择的选项,应该显示使用相应的值环“A”,然后使用for循环它应该显示对应于选项A ie的值。牛油果苹果。

我该如何做到这一点?

+0

看来你需要一个switch..case,而不是一个for循环...查看:HTTP: //www.w3schools.com/js/js_switch.asp –

+0

感谢您的建议..但情况是该数组来自数据库,它是动态的..所以它可以有任何价值..不能使用开关盒.. –

+0

如果你需要密钥,你最好使用o包含数组的对象,所以你可以混合使用数字和字母作为关键字:var fruits = {“1”:[“Grapes”,“mango”,“orange”],“2”:[“banana”],“A” :[“鳄梨”,“苹果”],“P”:[“梨”,“木瓜”,“石榴”,“李子”]}'然后你可以循环的键和使用该键来获得数组操作你想使用的选项。 – Shilly

回答

2

可以使用对象,而不是阵列和上select结合change事件,然后使用for循环。

var fruits = { 
 
    1: ["Grapes", "mango", "orange"], 
 
    2: ["banana"], 
 
    A: ["Avocado", "Apple"], 
 
    P: ["Pear", "Papaya", "pomegranate", "plum"] 
 
} 
 

 
$('select').change(function() { 
 
    var val = $(this).val(); 
 
    if (fruits[val]) { 
 
    for (var i = 0; i < fruits[val].length; i++) { 
 
     console.log(fruits[val][i]) 
 
    } 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="A">A</option> 
 
    <option value="P">P</option> 
 
</select>

+0

我们可以通过for循环访问它们吗?无需为每个循环执行... bcoz我也想它的长度...像数值.. –

+0

为了得到长度,你可以使用'console.log(fruits [val] .length)' –

+0

谢谢...但根据需要我需要循环而不是f或每个... bcoz即时通讯工作的一部分代码是动态的,并在几乎没有修改... –

0

看起来你想给元素数组赋予任意索引。在这种情况下,您的水果可以是普通对象,而不是数组。

var fruits = { 
    1: ["Grapes", "mango", "orange"], 
    2: ["banana"], 
    'A': ["avacado", "apple"], 
    'P': ["Pear", "Papaya"] 
} 

您可以按如下方式访问它们的任何类别;

fruit[1]; // ["Grapes", "mango", "orange"] 
fruit['A']; // ["avacado", "apple"] 
+0

so how使用for循环访问和显示名称 –

+0

@ Lalitkumar.annaldas您可以在这里查看整个系统演示:https://jsfiddle.net/8jq52em3/ – Dagohan

0

如何我会一直与对象解决了这个问题:

<html> 
<head></head> 
<body> 
    <div id="wrapper-select"></div> 
<script> 
var select, 
    keyToUse = "A", 
    fruits = { 
     "1" : ["Grapes","mango","orange"], 
     "2" : ["banana"], 
     "A" : ["Avocado","Apple"], 
     "P" : ["Pear","Papaya","pomegranate","plum"] 
    }, 
    createOption = function createOption(text) { 
     var option = document.createElement('option'); 
     option.value = text; 
     option.textContent = text; 
     return option; 
    }; 
// Select the fruits array we want to use. 
// Then loop over it, appending a new option element to our select element. 
select = fruits[keyToUse].reduce(function(select, fruitName) { 
    select.appendChild(createOption(fruitName)); 
    return select; 
}, document.createElement('select')); 
// Append the newly created select. 
document.querySelector('#wrapper-select').appendChild(select); 
</script> 
</body> 
</html> 
+0

谢谢..但我已经有选择下拉列表准备..它来自后端使用json ...所以不必担心... –