web-dev-qa-db-fra.com

Javascript Array inside Array - comment puis-je appeler un nom de tableau enfant

Voici l'exemple de ce que je fais:

   var size = new Array("S", "M", "L", "XL", "XXL");
   var color = new Array("Red", "Blue", "Green", "White", "Black");
   var options = new Array( size, color);

Je fais une boucle qui sélectionne des trucs qui fonctionnent bien, mais je veux aller chercher le nom de l'enfant Array, dans ce cas - taille ou couleur. Quand je fais alerte (options [0]), je récupère tous les éléments du tableau, mais dans certains cas, je souhaite uniquement obtenir le nom du tableau, qui est la taille/couleur, comme je l'ai déjà dit. Y a-t-il moyen d'y parvenir? Merci

18
Malyo

Je créerais un objet comme celui-ci:

var options = { 
    size: ["S", "M", "L", "XL", "XXL"],
    color: ["Red", "Blue", "Green", "White", "Black"]
};


alert(Object.keys(options));

Pour accéder aux clés individuellement:

for (var key in options) {
    alert(key);
}

P.S .: lorsque vous créez un nouvel objet tableau, n'utilisez pas new Array, utilisez plutôt [].

23
antonjs

vous pouvez obtenir en utilisant la valeur key quelque chose comme ceci:

var size = new Array("S", "M", "L", "XL", "XXL");
var color = new Array("Red", "Blue", "Green", "White", "Black");
var options = new Array(size, color);

var len = options.length;
for(var i = 0; i<len; i++)
{  
 for(var key in options[i])
    {
       alert(options[i][key])
    }

}

voir ici: http://jsfiddle.net/8hmRk/8/

5
Jignesh Rajput

Il n'y a aucun moyen de savoir que les deux membres du tableau options proviennent de variables nommées size et color.

De plus, elles ne sont pas nécessairement appelées exclusivement, toutes les variables peuvent également pointer sur ce tableau.

var notSize = size;

console.log(options[0]); // It is `size` or `notSize`?

Une chose que vous pouvez faire est d’utiliser un objet à la place ...

var options = {
    size: size,
    color: color
}

Ensuite, vous pourriez accéder à options.size ou options.color.

2
alex

Tu ne peux pas. Le tableau n'a pas de nom.

Vous avez juste deux références au tableau, une dans la variable et une autre dans le troisième.

Il n'y a aucun moyen de trouver toutes les références existantes pour un objet donné.

Si le nom est important, stockez-le avec les données.

var size = { data: ["S", "M", "L", "XL", "XXL"], name: 'size' };
var color = { data: ["Red", "Blue", "Green", "White", "Black"], name: 'color' };
var options = [size, color];

Évidemment, vous devrez modifier le code existant qui accède aux données (puisque vous avez maintenant options[0].data[0] au lieu de options[0][0] mais vous avez aussi options[0].name).

2
Quentin

Oui c'est .. .. Vous pouvez utiliser 

alert(options[0][0])

pour obtenir la taille "S"

ou

alert(options[0][1])

pour obtenir la couleur "rouge"

1
Tobi

Vous avez créé un tableau de tableaux (multidimensionnel). Par conséquent, l'option [0] est le tableau de taille. vous devez référencer le premier élément de l'enfant, qui est pour vous: options [0] [0].

Si vous voulez parcourir toutes les entrées, vous pouvez utiliser la syntaxe for .. in ... qui est décrite ici .

var a = [1,2,4,5,120,12];
for (var val in t) {
    console.log(t[val]);
}

var b = ['S','M','L'];
var both = [a,b];

for (var val in both) {
     for(val2 in both[val]){console.log(both[val][val2])}
}
1
dmp

Le tableau est comme n'importe quel autre objet. Vous pouvez lui donner un nom si vous voulez.

var size = new Array("S", "M", "L", "XL", "XXL");
var color = new Array("Red", "Blue", "Green", "White", "Black");
var options = new Array( size, color);
color.name = "color";
size.name = "size";
options[0].name == "size"
>true
0
gargamel

Dans ce cas, vous ne souhaitez pas insérer size et color dans un tableau, mais dans un objet

var options = { 
    'size': size,
    'color': color
  };

Ensuite, vous pouvez accéder aux jeux de clés en 

var keys = Object.keys( options );
0
Sirko