2012-04-22 106 views
6

我想从多维数组中获取值。这是我迄今为止所拥有的。
当我选择数组中的第一个选项时,我需要99的值和图像,例如“比利乔尔”。JavaScript:如何从多维数组中获取值?

var concertArray = [ 
    ["Billy Joel", "99", "equal.png"], 
    ["Bryan Adams", "89", "higher.png"], 
    ["Brian Adams", "25", "lower.png"] 
]; 

function populate(){ 
    for(i = 0; i < concertArray.length; i++){ 
     var select = document.getElementById("test"); 
     select.options[select.options.length] = new Option(concertArray[i][0], concertArray[i][1]); 
    } 
} 

回答

5

99 =>concertArray[i][1] 图像=>concertArray[i][2]

+0

非常感谢.... 现在,什么话我必须做的,完成concertImage在这种结构: concertName = concertList.options [concertIndex]的.text; concertPrice = parseFloat(concertList.options [concertIndex] .value); concertImage = ??? – kentrenholm 2012-04-22 20:45:20

0

AFAIK,所述Option构造只需要两个参数,文本和value。如果你想通过更多的数据,我建议你使用HTML5数据API:

var opt = new Option(concertArray[i][0], concertArray[i][1]); 
opt.setAttribute('data-image', concertArray[i][2]); 
select.options[select.options.length] = opt; 

然后你就可以抓住它使用getAttribute('data-image')

14

你可以尝试将多维数组转换为对象的数组像这样:

var concertArray = [ 
    {name: "Billy Joel", value: 99, image: "equal.png"}, 
    {name: "Bryan Adams", value: 89, image: "higher.png"}, 
    {name: "Brian Adams", value: 25, image: "lower.png"} 
]; 

然后你就可以访问该项目数组中像普通对象:

var concertName = concertArray[0].name; 
var concertPrice = parseFloat(concertArray[0].value); 
var concertImage = concertArray[0].image; 
+0

thnks帮助,它真的很好 – kamal 2013-02-01 11:16:30

+0

如何迭代这种类型的数组? – aspiring 2015-05-20 12:12:31

0

您可以使用2 for循环访问值,如下所示。

var concertArray = [ 
    ["Billy Joel", "99", "equal.png"], 
    ["Bryan Adams", "89", "higher.png"], 
    ["Brian Adams", "25", "lower.png"] 
    ]; 

function populate(){ 
    for(i=0;i<arr.length;i++) 
    { 
     for(j=0;j<arr[i].length;j++) 
     { 
      console.log(arr[i][j]); 
     } 
    } 
} 
+1

这个答案对于大型数组非常不好。 – 2017-04-11 13:56:08