2017-01-23 67 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 ...所以不必擔心... –