it-swarm.com.de

Javascript Array in Array - wie kann ich den Namen eines untergeordneten Arrays aufrufen?

Hier ist das Beispiel von dem, was ich tue:

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

Ich mache ein Loop-Select-Formular, das gut funktioniert, aber ich möchte den Array-Kindnamen abrufen, in diesem Fall - Größe oder Farbe. Wenn ich Alarm mache (Optionen [0]), bekomme ich die gesamten Elemente des Arrays, aber für einen speziellen Fall möchte ich nur den Array-Namen erhalten, der wie bereits gesagt Größe/Farbe hat. Gibt es einen Weg, das zu erreichen? Vielen Dank

18
Malyo

Ich würde ein Objekt wie dieses erstellen:

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


alert(Object.keys(options));

Um auf die Schlüssel individuell zuzugreifen:

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

P .: Wenn Sie ein neues Array-Objekt erstellen, verwenden Sie nicht new Array, sondern [].

23
antonjs

sie können key so etwas wie folgt verwenden:

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

}

siehe hier: http://jsfiddle.net/8hmRk/8/

5
Jignesh Rajput

Es gibt keine Möglichkeit zu wissen, dass die beiden Mitglieder des options-Arrays aus Variablen mit dem Namen size und color stammen.

Sie werden auch nicht unbedingt so genannt, dass ausschließlich jede Variable auf dieses Array zeigen könnte.

var notSize = size;

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

Sie können dort stattdessen ein Objekt verwenden ...

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

Dann könnten Sie auf options.size oder options.color zugreifen.

2
alex

Du kannst nicht Das Array hat keinen Namen.

Sie haben nur zwei Verweise auf das Array, einen in der Variablen und einen im dritten Array.

Es ist nicht möglich, alle Referenzen zu finden, die für ein bestimmtes Objekt vorhanden sind.

Wenn der Name wichtig ist, speichern Sie ihn mit den Daten.

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

Offensichtlich müssen Sie den vorhandenen Code ändern, der auf die Daten zugreift (da Sie jetzt options[0].data[0] anstelle von options[0][0], aber auch options[0].name haben).

2
Quentin

Ja, es ist ... Sie können verwenden 

alert(options[0][0])

um die Größe "S" zu erhalten

oder

alert(options[0][1])

die Farbe "Rot" erhalten

1
Tobi

Sie haben ein Array von Arrays (mehrdimensional) erstellt, daher ist options [0] in diesem Fall das Größenarray. Sie müssen auf das erste Element des untergeordneten Objekts verweisen. Dies ist für Sie: options [0] [0].

Wenn Sie alle Einträge durchlaufen möchten, können Sie die for .. in ...-Syntax verwenden, die hier beschrieben wird.

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

Array ist wie jedes andere Objekt. Sie können ihm einen Namen geben, wenn Sie möchten.

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

In diesem Fall möchten Sie size und color nicht in ein Array einfügen, sondern in ein Objekt

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

Anschließend können Sie die Schlüsselsätze über erreichen 

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