Wenn ich ein Array wie dieses habe:
var arr = ['one','two','three'];
Auf diese Weise kann ich auf verschiedene Teile zugreifen:
console.log(arr[1]);
Wie kann ich auf Objekteigenschaften nach ihrer Reihenfolge und nicht nach Schlüssel zugreifen?
Beispiel:
var obj = {
'something' : 'awesome',
'evenmore' : 'crazy'
},
jbo = {
'evenmore' : 'crazy',
'something' : 'awesome'
};
Wie würde ich die erste Eigenschaft für jedes Objekt erhalten - "etwas" von obj
und "noch mehr" von - jbo
ohne explizit den Eigenschaftsnamen zu verwenden?
Nun, einige von Ihnen scheinen zu glauben, dass ich nach etwas wie:
console.log(obj['something']);
Dies ist nicht der Fall, ich möchte speziell auf den Index abzielen, genau wie im ersten Beispiel - wenn es möglich ist.
javascript
arrays
Daryl
quelle
quelle
Antworten:
Nein, das ist nicht möglich.
Am nächsten können Sie ein Array der Schlüssel des Objekts abrufen und Folgendes verwenden:
... aber es gibt keine Garantie dafür, dass die Schlüssel in der von Ihnen festgelegten Reihenfolge zurückgegeben werden. Es könnte also so aussehen:
quelle
Object.keys()
kann zuverlässig verwendet werden, wenn Sie den Inhalt des Objekts kennen. Weitere Details hier: stackoverflow.com/questions/280713/…Ich kann mir das nur vorstellen, indem ich eine Methode erstelle, mit der Sie die Eigenschaft verwenden können
Object.keys();
.Demo: http://jsfiddle.net/UmkVn/
Es wäre möglich, dies auf alle Objekte mit zu erweitern,
Object.prototype;
aber das wird normalerweise nicht empfohlen.Verwenden Sie stattdessen einen Funktionshelfer:
quelle
return this[Object.keys(this)[n]];
, um es generisch zu machen.Sie können die
Object.values()
Methode verwenden, wenn Sie die nicht verwenden möchtenObject.keys()
.Im Gegensatz zu der
Object.keys()
Methode, die ein Array der eigenen aufzählbaren Eigenschaften eines bestimmten Objekts zurückgibt, wie zum Beispiel:Würde das folgende Array ausdrucken:
Die
Object.values()
Methode gibt ein Array der eigenen Aufzählungseigenschaft eines bestimmten Objekts zurückvalues
.Wenn Sie also dasselbe Objekt haben, aber stattdessen Werte verwenden,
Sie würden das folgende Array erhalten:
Wenn Sie also auf das zugreifen möchten
object1.b
, aber stattdessen einen Index verwenden möchten , können Sie Folgendes verwenden:Weitere Informationen zu dieser Methode finden Sie hier .
quelle
Bearbeiten:
Eigentlich ist der 'Index' der Schlüssel. Wenn Sie die Position eines Schlüssels speichern möchten, müssen Sie ein benutzerdefiniertes Objekt erstellen, um dies zu handhaben.
quelle
Mit jquery können Sie dies tun:
quelle
Holen Sie sich das Array der Schlüssel, kehren Sie es um und führen Sie dann Ihre Schleife aus
quelle
Sie können ein Array erstellen, das mit Ihren Objektfeldern gefüllt ist, einen Index für das Array verwenden und über dieses auf Objekteigenschaften zugreifen
quelle
Ich ging voran und machte eine Funktion für Sie:
quelle
Wenn Sie nicht sicher sind, ob Object.keys () Ihnen die Schlüssel in der richtigen Reihenfolge zurückgibt, können Sie stattdessen diese Logik ausprobieren
quelle