Programmierung
Radzivon Alkhovik
Low-Code-Automatisierungs-Enthusiast
4. Juli 2024
Eine Low-Code-Plattform, die die Einfachheit von No-Code mit der Leistung von Full-Code verbindet 🚀
Jetzt kostenlos starten
4. Juli 2024
7
min lesen

Wie iteriert man über ein JavaScript-Objekt?

Radzivon Alkhovik
Low-Code-Automatisierungs-Enthusiast
Inhaltsverzeichnis

Das Iterieren über Objekte ist eine grundlegende Aufgabe in der JavaScript-Programmierung. Im Gegensatz zu Arrays sind Objekte in JavaScript standardmäßig nicht iterierbar, was bedeutet, dass Sie Methoden wie forEach(), map() oder for...of loop nicht direkt auf einem Objekt anwenden können. Es gibt jedoch mehrere Möglichkeiten, die Eigenschaften eines Objekts zu durchlaufen und sowohl auf die Schlüssel als auch auf die Werte zuzugreifen. In diesem Artikel untersuchen wir verschiedene Methoden, um effizient über ein JavaScript-Objekt zu iterieren, zusammen mit ihrer Syntax, Beispielen und Anwendungsfällen.

Die zentralen Thesen:  JavaScript-Objekte sind nicht von Natur aus iterierbar, es gibt jedoch mehrere Methoden, um ihre Eigenschaften zu durchlaufen. Die for...in-Schleife ist traditionell, erfordert jedoch eine hasOwnProperty()-Prüfung, während neuere Methoden wie Object.entries() mit map()/forEach(), Object.keys() mit forEach() und Object.values() rationalisiertere Ansätze bieten. Die _.forOwn()-Methode von Lodash bietet eine praktische Syntax für diejenigen, die die Bibliothek bereits verwenden. Die Wahl der Iterationsmethode hängt von den Anforderungen an die Browserkompatibilität, der Lesbarkeit des Codes und den spezifischen Anwendungsfällen ab. Während die Leistung zwischen den Methoden leicht variieren kann, sind die Unterschiede für die meisten Anwendungen normalerweise vernachlässigbar, und Entwickler sollten der Klarheit und Wartbarkeit des Codes Priorität einräumen.

Schreiben Sie den Code, auch wenn Sie Anfänger sind, mit Latenodes KI-Assistent

Methode 1: Verwenden einer for...in-Schleife

Die for...in-Schleife ist eine traditionelle Methode, um über die Eigenschaften eines Objekts zu iterieren. Sie ermöglicht Ihnen den Zugriff auf die Schlüssel und Werte eines Objekts. Und so funktioniert es:

Syntax:


for (let key in object) {
  if (object.hasOwnProperty(key)) {
    // Perform operations with key and object[key]
  }
}

Beispiel:



const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

for (let key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(key + ': ' + person[key]);
  }
}
Output:
name: John
age: 30
city: New York

Es ist wichtig, die Methode hasOwnProperty() innerhalb der Schleife zu verwenden, um zu prüfen, ob der Schlüssel zum Objekt selbst und nicht zu seiner Prototypenkette gehört. Dadurch wird sichergestellt, dass Sie nur über die eigenen Eigenschaften des Objekts iterieren und geerbte Eigenschaften vermeiden.

Die for...in-JavaScript-Schleife durch das Objekt ist eine einfache Möglichkeit, die Eigenschaften eines Objekts zu durchlaufen. Sie weist jedoch einige Einschränkungen auf:

  • Es durchläuft alle aufzählbaren Eigenschaften eines Objekts, einschließlich der von der Prototypenkette geerbten Eigenschaften. Deshalb ist es notwendig, hasOwnProperty() zu verwenden, um geerbte Eigenschaften herauszufiltern.
  • Die Iterationsreihenfolge ist nicht garantiert. Auf die Eigenschaften kann möglicherweise nicht in derselben Reihenfolge zugegriffen werden, in der sie definiert wurden.

Trotz dieser Einschränkungen bleibt die for...in-Schleife aufgrund ihrer Einfachheit und breiten Browserunterstützung eine häufig verwendete Methode zur Objektiteration.

Methode 2: Verwenden der Methoden Object.entries() und map()

Die Methode Object.entries() ist eine neuere Ergänzung zu JavaScript (eingeführt in ECMAScript 2017), die ein Array der aufzählbaren Zeichenfolgen-Schlüsseleigenschaftspaare [Schlüssel, Wert] eines bestimmten Objekts zurückgibt. Wir können dann die Methode map() verwenden, um über das Array zu iterieren und auf die Schlüssel und Werte zuzugreifen.

Syntax:



const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

for (let key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(key + ': ' + person[key]);
  }
}
Output:
name: John
age: 30
city: New York

Beispiel:



const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

for (let key in person) {
  if (person.hasOwnProperty(key)) {
    console.log(key + ': ' + person[key]);
  }
}
Output:
name: John
age: 30
city: New York

Die Methode Object.entries() bietet eine praktische Möglichkeit, ein Array von Schlüssel-Wert-Paaren aus einem Objekt abzurufen. Durch die Kombination mit der Methode map() können Sie problemlos über das Array iterieren und Operationen an jedem Schlüssel-Wert-Paar durchführen.

Ein Vorteil der Verwendung von Object.entries() besteht darin, dass nur die aufzählbaren Eigenschaften des Objekts zurückgegeben werden und alle geerbten Eigenschaften aus der Prototypenkette ausgeschlossen werden. Dadurch ist keine zusätzliche Prüfung mit hasOwnProperty() mehr erforderlich.

Beachten Sie jedoch, dass Object.entries() in älteren Browsern (wie Internet Explorer) nicht unterstützt wird. Wenn die Browserkompatibilität ein Problem darstellt, müssen Sie möglicherweise einen Polyfill oder eine alternative Methode verwenden.

Weitere Informationen zu Object.entries() finden Sie im MDN-Dokumentation.

Methode 3: Verwenden der Methoden forEach() und Object.keys()

Die Methode Object.keys() gibt ein Array der aufzählbaren Eigenschaftsnamen (Schlüssel) eines bestimmten Objekts zurück. Wir können die Methode forEach() verwenden, um über das Array der Schlüssel zu iterieren und mithilfe der Schlüssel auf die entsprechenden Werte zuzugreifen.

Syntax:



Object.keys(object).forEach(key => {
  // Perform operations with key and object[key]
});

Beispiel:



const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

Object.keys(person).forEach(key => {
  console.log(key + ': ' + person[key]);
});
Output:
name: John
age: 30
city: New York

Die Verwendung von Object.keys() in Kombination mit forEach() bietet eine Möglichkeit, über die Schlüssel eines Objekts zu iterieren und auf die entsprechenden Werte zuzugreifen. Diese Methode ist nützlich, wenn Sie nur die Schlüssel eines Objekts benötigen und Operationen basierend auf diesen Schlüsseln durchführen möchten.

Ähnlich wie Object.entries() gibt Object.keys() nur die aufzählbaren Eigenschaften des Objekts zurück, sodass Sie hasOwnProperty() nicht verwenden müssen, um geerbte Eigenschaften herauszufiltern.

Weitere Informationen zu Object.keys() finden Sie im MDN-Dokumentation.

Methode 4: Verwenden der Lodash _.forOwn()-Methode

Lodash ist eine beliebte Hilfsbibliothek, die eine Reihe hilfreicher Funktionen für die Arbeit mit Objekten und Arrays bietet. Wenn Sie Lodash bereits in Ihrem Projekt verwenden, können Sie dessen _.forOwn()-Methode nutzen, um über die eigenen Eigenschaften eines Objekts zu iterieren.

Syntax:



_.forOwn(object, (value, key) => {
  // Perform operations with key and value
});


Beispiel:



const _ = require('lodash');

const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

_.forOwn(person, (value, key) => {
  console.log(key + ': ' + value);
});
Output:
name: John
age: 30
city: New York

Die Methode _.forOwn() iteriert über die eigenen aufzählbaren Eigenschaften eines Objekts und stellt den Wert und den Schlüssel für die Rückruffunktion bereit. Sie ist eine praktische Alternative zur for...in-Schleife durch object.entries-JavaScript, wenn Sie in Ihrem Projekt bereits Lodash verwenden.

Beachten Sie, dass Sie zur Verwendung von Lodash die Bibliothek installieren und in Ihr Projekt importieren müssen. Wenn Sie Lodash nicht für andere Zwecke verwenden, ist es möglicherweise nicht erforderlich, es ausschließlich für die Objektiteration einzubinden.

Weitere Informationen zu Lodash und seinen JS-Loop-Through-Object-Iteration-Methoden finden Sie im Lodash-Dokumentation.

Methode 5: Verwenden der Methoden Object.values() und forEach()

Die Methode Object.values() gibt ein Array der aufzählbaren Eigenschaftswerte eines bestimmten Objekts zurück. Wir können die Methode forEach() verwenden, um durch das Objekt-JavaScript über das Werte-Array zu iterieren. Wenn Sie auch die entsprechenden Schlüssel benötigen, können Sie die Methode Object.keys() in Verbindung damit verwenden.

Syntax:



Object.values(object).forEach((value, index) => {
  const key = Object.keys(object)[index];
  // Perform operations with key and value
});

Beispiel:



const person = {
  name: 'John',
  age: 30,
  city: 'New York'
};

Object.values(person).forEach((value, index) => {
  const key = Object.keys(person)[index];
  console.log(key + ': ' + value);
});
Output:
name: John
age: 30
city: New York

Mit Object.values() können Sie direkt über die Werte eines Objekts iterieren. Wenn Sie auch die entsprechenden Schlüssel benötigen, können Sie diese mit Object.keys() abrufen und auf den Schlüssel am selben Index wie den Wert zugreifen.

Diese Methode ist nützlich, wenn Sie hauptsächlich mit den Werten eines Objekts arbeiten und bei Bedarf optional auf die Schlüssel zugreifen müssen.

Weitere Informationen zu Object.values() finden Sie im MDN-Dokumentation.

Wrapping up

In diesem Artikel haben wir verschiedene Methoden zum Iterieren über ein JavaScript-Iterate-Objekt untersucht. Jede Methode hat ihre eigenen Vorteile und Anwendungsfälle:

  • Die for...in-Schleife ist eine traditionelle Methode, um über Objekt-JavaScript zu iterieren. Sie ist einfach und wird weithin unterstützt, erfordert jedoch eine zusätzliche Prüfung auf hasOwnProperty(), um die Iteration über geerbte Eigenschaften zu vermeiden.
  • Die Methode Object.entries() bietet in Kombination mit map() oder forEach() eine kompakte Möglichkeit, sowohl auf Schlüssel als auch auf Werte eines Objekts zuzugreifen. Dadurch wird hasOwnProperty() überflüssig, wird aber möglicherweise in älteren Browsern nicht unterstützt.
  • Die Methode Object.keys() ermöglicht zusammen mit forEach() das Durchlaufen der Schlüssel eines Objekts und den Zugriff auf die entsprechenden Werte. Dies ist nützlich, wenn Sie hauptsächlich mit den Schlüsseln arbeiten müssen.
  • Die Lodash _.forOwn()-Methode ist eine praktische Option, wenn Sie Lodash bereits in Ihrem Projekt verwenden. Sie bietet eine saubere Syntax zum Iterieren über die eigenen Eigenschaften eines Objekts.
  • Die Methode Object.values() konzentriert sich in Verbindung mit forEach() auf die Iteration über die Werte eines foreach-Objekts. Sie können Object.keys() in Verbindung verwenden, wenn Sie auch die Schlüssel benötigen.

Berücksichtigen Sie bei der Auswahl einer Methode zum Iterieren über ein JavaScript-Objekt Faktoren wie Browserkompatibilität, Lesbarkeit des Codes und spezifische Anforderungen Ihres Anwendungsfalls. Unabhängig davon, für welche Methode Sie sich entscheiden, ist das Verständnis, wie man effektiv über Objekte iteriert, für eine effiziente JavaScript-Programmierung entscheidend.

Schreiben Sie den Code, auch wenn Sie Anfänger sind, mit Latenodes KI-Assistent

FAQ

Was ist der Unterschied zwischen for...in und Object.entries()?

Die for...in-Schleife iteriert über alle aufzählbaren Eigenschaften eines Objekts, einschließlich der von der Prototypenkette geerbten Eigenschaften. Sie erfordert eine zusätzliche Prüfung mit hasOwnProperty(), um eine Iteration über geerbte Eigenschaften zu vermeiden. Andererseits gibt Object.entries() ein Array der aufzählbaren Eigenschaftspaare [Schlüssel, Wert] eines bestimmten Objekts zurück, die mit Methoden wie map() oder forEach() leicht durchlaufen werden können. Object.entries() schließt nur die eigenen Eigenschaften des Objekts ein und schließt geerbte aus.

Welche Methode sollte ich verwenden, wenn ich nur Schlüssel oder nur Werte benötige?

Wenn Sie nur die Schlüssel eines JS-Iterationsobjekts benötigen, können Sie die Methode Object.keys() verwenden, die ein Array der aufzählbaren Eigenschaftsnamen (Schlüssel) eines bestimmten Objekts zurückgibt. Wenn Sie nur die Werte benötigen, können Sie die Methode Object.values() verwenden, die ein Array der aufzählbaren Eigenschaftswerte eines bestimmten Objekts zurückgibt.

Welche Methode ist schneller oder effizienter?

Die Leistung verschiedener Methoden kann je nach JavaScript-Engine und Objektgröße variieren. Im Allgemeinen gilt die for...in-Schleife als etwas schneller als die Verwendung von Methoden wie Object.entries() oder Object.keys() mit forEach(). Der Leistungsunterschied ist jedoch oft vernachlässigbar, es sei denn, Sie arbeiten mit extrem großen Objekten. Es wird empfohlen, der Lesbarkeit und Wartbarkeit des Codes Priorität einzuräumen, sofern Sie keine besonderen Leistungsanforderungen haben.

Wie kann ich über die Einträge eines Objekts iterieren und dabei die Reihenfolge der Schlüssel beibehalten?

Objekte in JavaScript sind standardmäßig ungeordnet und die Reihenfolge der Schlüssel ist nicht garantiert. Wenn Sie die Eigenschaften eines Objekts in einer bestimmten Reihenfolge durchlaufen müssen, haben Sie einige Optionen:

  • Verwenden Sie die Methode Object.entries(), um ein Array von [Schlüssel, Wert]-Paaren zu erhalten, sortieren Sie das Array basierend auf den Schlüsseln und iterieren Sie dann über das sortierte Array.
  • Erstellen Sie ein Array von Schlüsseln in der gewünschten Reihenfolge und greifen Sie dann mit diesen Schlüsseln auf die entsprechenden Werte aus dem Objekt zu.
  • Verwenden Sie eine Map anstelle eines Objekts, da Map die Einfügereihenfolge von Schlüssel-Wert-Paaren beibehält. Sie können ein Objekt mit new Map(Object.entries(object)) in eine Map konvertieren.

Kann ich mit diesen Iterationsmethoden Pfeilfunktionen verwenden?

Ja, Sie können Pfeilfunktionen mit Methoden wie map(), forEach() und _.forOwn() verwenden. Pfeilfunktionen bieten eine prägnante Syntax zum Schreiben von Funktionsausdrücken. Beispiel:



Object.entries(person).map(([key, value]) => {
  console.log(key + ': ' + value);
});


Beachten Sie jedoch, dass Pfeilfunktionen eine lexikalische this-Bindung haben, was bedeutet, dass sie den this-Wert vom umgebenden Bereich erben. Wenn Sie innerhalb des Iterationsrückrufs auf den this-Kontext zugreifen müssen, müssen Sie stattdessen möglicherweise einen regulären Funktionsausdruck verwenden.

Gibt es andere Bibliotheken oder Methoden zur Objektiteration?

Ja, es gibt mehrere andere Bibliotheken und Methoden, die Dienstprogramme für die Objektiteration bereitstellen. Einige beliebte sind:

  • Underscore.js: Stellt die Methode _.each() zum Iterieren über Objekte bereit.
  • Lodash: Bietet verschiedene Methoden wie _.forOwn(), _.forIn() und _.forEach() zur Objektiteration.
  • jQuery: Verfügt über die Methode $.each(), die zum Iterieren über Objekte verwendet werden kann.

Diese Bibliotheken bieten zusätzliche Funktionen und können hilfreich sein, wenn Sie sie bereits in Ihrem Projekt verwenden. Wenn Sie jedoch nur eine grundlegende Objektiteration benötigen, reichen die in diesem Artikel beschriebenen nativen JavaScript-Methoden aus.

Denken Sie daran, dass die Wahl der Iterationsmethode von Ihren spezifischen Anforderungen, Ihrer Codebasis und Ihren persönlichen Vorlieben abhängt. Experimentieren Sie mit verschiedenen Ansätzen und wählen Sie denjenigen aus, der die Lesbarkeit, Wartbarkeit und Effizienz des Codes in Ihrem speziellen Anwendungsfall verbessert.

Anwendung einsAnwendung zwei

Jetzt testen

Verwandte Blogs

Anwendungsfall

Unterstützt von