2012-06-07 17 views
5

Hallo, ich bin derzeit ein Array mit .eachErhalten Schlüssel des assoziativen Arrays

$.each(messages, function(key,message){ doStuff(); }); 

Aber der Schlüssel ist der Index des Arrays und nicht die assoziativen Schlüssel holen.

Wie kann ich es leicht bekommen?

Dank

+5

Ein Array hat keinen assoziativen Schlüssel. Der Index ist der Schlüssel. Was versuchst du zu machen? – Guffa

+2

Wo sind Sie Array d. H "Nachrichten"? post, dass – thecodeparadox

+1

Könnten Sie bitte ein Beispiel Array (2-3 Elemente) und was "assoziativen Schlüssel" Sie erwarten? –

Antwort

9
var data = { 
    val1 : 'text1', 
    val2 : 'text2', 
    val3 : 'text3' 
}; 
$.each(data, function(key, value) { 
    alert("The key is '" + key + "' and the value is '" + value + "'"); 
}); 
​ 

Siehe Demo

+0

Danke, ich werde ein Array verwenden, um diese Arbeit zu bekommen, du hast Recht –

0

JavaScript nicht "assoziative Arrays", wie in PHP muss, sondern Objekte. Objekte können jedoch Zeichenfolgenschlüssel haben, die einem Wert entsprechen. Arrays sind Indexlisten numerisch, also, wenn key eine Zahl ist, muss es ein Array sein, mit dem Sie arbeiten und kein Objekt, und deshalb können Sie den Schlüssel nicht bekommen, da es keinen gibt.

Daher möchten Sie wahrscheinlich über ein Array mit einem einfachen for-Schleife anstelle eines Callback-basierten Iterator wie $.each iterieren.

19

JavaScript hat keine "assoziativen Arrays". Es hat Arrays:

[1, 2, 3, 4, 5] 

und Objekte:

{a: 1, b: 2, c: 3, d: 4, e: 5} 

Array ist nicht bekannt "Schlüssel", sie haben Indizes, die auf 0

beginnend gezählt Arrays verwenden [] zugegriffen und auf Objekte kann unter Verwendung von [] oder . zugegriffen werden.

Beispiel:

var array = [1,2,3]; 
array[1] = 4; 
console.log(array); // [1,4,3] 

var obj = {}; 
obj.test = 16; 
obj['123'] = 24; 
console.log(obj); // {test: 16, 123: 24} 

Wenn Sie versuchen, ein Array zuzugreifen einen String als Schlüssel anstelle eines int verwenden, die Probleme verursachen können. Sie würden eine Eigenschaft des Arrays und keinen Wert festlegen.

var array = [1,2,3]; 
array['test'] = 4; // this doesn't set a value in the array 
console.log(array); // [1,2,3] 
console.log(array.test); // 4 

jQuery $.each Arbeiten mit diesen beiden. Im Rückruf für $.each ist der erste Parameter key entweder der Schlüssel des Objekts oder der Index des Arrays.

$.each([1, 2, 3, 4, 5], function(key, value){ 
    console.log(key); // logs 0 1 2 3 4 
}); 

$.each({a: 1, b: 2, c: 3, d: 4, e: 5}, function(key, value){ 
    console.log(key); // logs 'a' 'b' 'c' 'd' 'e' 
}); 
Verwandte Themen