2012-04-22 24 views
6

Estoy tratando de obtener los valores de una matriz multidimensional. Esto es lo que tengo hasta ahora.
Necesito el valor de 99 y la imagen cuando selecciono la primera opción en la matriz, p. "Billy Joel".JavaScript: ¿Cómo obtener los valores de una matriz multidimensional?

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]); 
    } 
} 

Respuesta

5

99 =>concertArray[i][1] imagen =>concertArray[i][2]

+0

Gracias tanto .... Ahora bien, ¿qué habría que hacer para completar la concertImage en esta estructura: concertName = concertList.options [concertIndex] .text; concertPrice = parseFloat (concertList.options [concertIndex] .value); concertImage = ??? – kentrenholm

0

yo sepa, el constructor Option sólo toma dos argumentos, el texto y el value. Si desea pasar más datos, le sugiero que utilice la API de datos de HTML 5:

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

Entonces se puede agarrar usando getAttribute('data-image')

14

Usted puede tratar de transformar la matriz multi-dimensional para una matriz de objetos de esta manera:

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"} 
]; 

a continuación, se puede acceder a los elementos de la matriz como objetos regulares:

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

para ayudar, es realmente bueno – kamal

+0

¿Cómo iterar este tipo de matriz? – aspiring

0

Puede acceder a valores utilizando 2 bucles for como se muestra a continuación.

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

Esta respuesta es terriblemente mala para arreglos grandes. –

Cuestiones relacionadas