Gibt es eine elegante Möglichkeit, auf die erste Eigenschaft eines Objekts zuzugreifen ...
- wo Sie den Namen Ihrer Immobilien nicht kennen
- ohne eine Schleife wie
for .. in
oder jQuery's zu verwenden$.each
Zum Beispiel muss ich auf ein foo1
Objekt zugreifen , ohne den Namen von foo1 zu kennen:
var example = {
foo1: { /* stuff1 */},
foo2: { /* stuff2 */},
foo3: { /* stuff3 */}
};
javascript
object
atogle
quelle
quelle
Antworten:
Damit können Sie auch über Indizes auf andere Eigenschaften zugreifen. Sei dir dessen bewusst!
Object.keys
Die Rückgabereihenfolge wird gemäß ECMAScript nicht garantiert, jedoch inoffiziell bei allen gängigen Browser-Implementierungen. Weitere Informationen hierzu finden Sie unter https://stackoverflow.com/a/23202095 .quelle
first()
oder etwas Ähnliches könnte damit umgehen.Probieren Sie die
for … in
Schleife aus und brechen Sie nach der ersten Iteration ab:quelle
Sie können auch tun
Object.values(example)[0]
.quelle
Object.keys
, weil Sie garantiert den ersten Artikel bekommen.Verwenden Sie
Object.keys
diese Option , um ein Array der Eigenschaften eines Objekts abzurufen. Beispiel:Dokumentation und browserübergreifendes Shim finden Sie hier . Ein Beispiel für seine Verwendung finden Sie in einer anderen meiner Antworten hier .
Bearbeiten : Aus Gründen der Übersichtlichkeit möchte ich nur das wiederholen, was in anderen Antworten korrekt angegeben wurde: Die Schlüsselreihenfolge in Javascript-Objekten ist undefiniert.
quelle
Eine Version mit einer Regel:
quelle
for in
ohne Überprüfung riskant sein,hasOwnProperty
da das Objekt andere unerwünschte Werte enthält, die programmgesteuert an das Objekt angehängt werden, sodass Sie möglicherweise ein unerwünschtes Ergebnis aus diesem Snippet erhalten. Nur weil es kurz und ordentlich ist, heißt das nicht, dass es sicher optimal ist.Es gibt keine "erste" Eigenschaft. Objektschlüssel sind ungeordnet.
Wenn Sie sie mit for
(var foo in bar)
durchlaufen, erhalten Sie sie in einer bestimmten Reihenfolge, dies kann sich jedoch in Zukunft ändern (insbesondere, wenn Sie andere Schlüssel hinzufügen oder entfernen).quelle
Lösung mit lodash Bibliothek:
Es gibt jedoch keine Garantie für die interne Speicherreihenfolge der Objekteigenschaften, da dies von der Implementierung der Javascript-VM abhängt.
quelle
var object = { childIndex: { .. } }; var childObject = _.find(Object);
Nein. Ein Objektliteral im Sinne von MDC lautet:
Daher ist ein Objektliteral kein Array, und Sie können nur mit ihrem expliziten Namen oder einer
for
Schleife mit demin
Schlüsselwort auf die Eigenschaften zugreifen .quelle
Die Top-Antwort könnte das gesamte Array generieren und dann aus der Liste erfassen. Hier ist eine weitere effektive Verknüpfung
quelle
Dies wurde hier schon einmal behandelt.
Das Konzept von first gilt nicht für Objekteigenschaften, und die Reihenfolge einer for ... in-Schleife wird durch die Spezifikationen nicht garantiert. In der Praxis ist es jedoch zuverlässig FIFO, außer kritisch für Chrome ( Fehlerbericht ). Treffen Sie Ihre Entscheidungen entsprechend.
quelle
Ich empfehle Ihnen nicht, Object.keys zu verwenden, da dies in alten IE-Versionen nicht unterstützt wird. Aber wenn Sie das wirklich brauchen, können Sie den obigen Code verwenden, um die Rückenkompatibilität zu gewährleisten:
Funktion Firefox (Gecko) 4 (2.0) Chrome 5 Internet Explorer 9 Opera 12 Safari 5
Weitere Informationen: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys
Wenn Sie jedoch nur die erste benötigen, können wir eine kürzere Lösung vereinbaren, z.
quelle
Um den ersten Schlüsselnamen im Objekt zu erhalten, können Sie Folgendes verwenden:
Gibt eine Zeichenfolge zurück, sodass Sie nicht auf verschachtelte Objekte zugreifen können, wenn:
var obj = { first: { someVal : { id : 1} };
Hier können Sie mit dieser Lösung nicht auf die ID zugreifen.Die beste Lösung, wenn Sie das eigentliche Objekt erhalten möchten, ist die Verwendung von lodash wie:
So geben Sie den Wert des ersten Schlüssels zurück (wenn Sie den Namen des ersten Schlüssels nicht genau kennen):
Wenn Sie den Schlüsselnamen kennen, verwenden Sie einfach:
oder
quelle
Wenn Sie auf "die erste Eigenschaft eines Objekts" zugreifen müssen, kann dies bedeuten, dass etwas mit Ihrer Logik nicht stimmt. Die Reihenfolge der Eigenschaften eines Objekts sollte keine Rolle spielen.
quelle
Verwenden Sie ein Array anstelle eines Objekts (eckige Klammern).
Beachten Sie, dass Sie die 'foo'-Kennungen verlieren. Sie können den enthaltenen Objekten jedoch eine Namenseigenschaft hinzufügen:
quelle
Gibt es einen Grund, dies nicht zu tun?
quelle
.map()
nur für eingebauteSie können verwenden,
Object.prototype.keys
wodurch alle Schlüssel eines Objekts in derselben Reihenfolge zurückgegeben werden. Wenn Sie also das erste Objekt möchten, holen Sie sich einfach dieses Array und verwenden Sie das erste Element als gewünschten Schlüssel.quelle
wir können auch mit diesem Ansatz tun.
quelle
Hier ist eine sauberere Methode, um den ersten Schlüssel zu erhalten:
quelle
[first]
. Der Benutzer hat kein Array als Antwort angefordert. Warum tun Sie dies, umfirst = Object.keys(example)[0]
dasselbe zu tun, ohne die Antwort in ein Array einschließen zu müssen? Warum ist deine bitte sauberer?