Programmierung
Radzivon Alkhovik
Enthusiast der Low-Code-Automatisierung
4. Juli 2024
Eine Low-Code-Plattform, die die Einfachheit von No-Code mit der Leistungsfähigkeit von Full-Code verbindet 🚀.
Jetzt kostenlos loslegen
4. Juli 2024
-
7
min lesen

Wie kann man über ein JavaScript-Objekt iterieren?

Radzivon Alkhovik
Enthusiast der Low-Code-Automatisierung
Inhaltsübersicht

Das Iterieren über Objekte ist eine grundlegende Aufgabe in der JavaScript-Programmierung. Im Gegensatz zu Arrays sind Objekte in JavaScript standardmäßig nicht iterierbar. Das bedeutet, dass du Methoden wie forEach(), map() oder for...of-Schleifen nicht direkt auf ein Objekt anwenden kannst. Es gibt jedoch mehrere Möglichkeiten, die Eigenschaften eines Objekts in einer Schleife zu durchlaufen und sowohl auf die Schlüssel als auch auf die Werte zuzugreifen. In diesem Artikel stellen wir dir verschiedene Methoden vor, mit denen du effizient über ein JavaScript-Objekt iterieren kannst, und erläutern ihre Syntax, Beispiele und Anwendungsfälle.

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

Schreibe den Code, auch wenn du Anfänger bist, mit Latenode's AI Assistent

Methode 1: Verwendung der for...-Schleife

Die for...in-Schleife ist eine traditionelle Methode, um über die Eigenschaften eines Objekts zu iterieren. Sie ermöglicht es dir, sowohl auf die Schlüssel als auch auf die Werte eines Objekts zuzugreifen. So funktioniert sie:

Syntax:


for (let key in object) {
  if (object.hasOwnProperty(key)) {
    // Operationen mit Schlüssel und object[key] durchführen
  }
}

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. So wird sichergestellt, dass du nur die eigenen Eigenschaften des Objekts durchläufst und keine geerbten Eigenschaften verwendest.

Die for...-Schleife in Javascript ist eine unkomplizierte Methode, um die Eigenschaften eines Objekts zu durchlaufen. Sie hat jedoch ein paar Einschränkungen:

  • Sie durchläuft alle aufzählbaren Eigenschaften eines Objekts, einschließlich der geerbten Eigenschaften aus der Prototypenkette. Deshalb ist es notwendig, hasOwnProperty() zu verwenden, um geerbte Eigenschaften herauszufiltern.
  • Die Reihenfolge der Iteration ist nicht garantiert. Der Zugriff auf die Eigenschaften erfolgt möglicherweise nicht in der gleichen Reihenfolge, in der sie definiert wurden.

Trotz dieser Einschränkungen ist die for...in-Schleife aufgrund ihrer Einfachheit und der breiten Browserunterstützung eine häufig verwendete Methode für die Iteration von Objekten.

Methode 2: Object.entries()-Methode und map()-Methode verwenden

Die Methode Object.entries() ist eine neuere Ergänzung zu JavaScript (eingeführt in ECMAScript 2017), die ein Array mit den aufzählbaren String-Schlüssel-Eigenschaftspaaren [key, value] eines bestimmten Objekts zurückgibt. Mit der map()-Methode können wir über das Array iterieren und auf die Schlüssel und Werte zugreifen.

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 bequeme Möglichkeit, ein Array von Schlüssel-Wert-Paaren aus einem Objekt zu erhalten. Wenn du sie mit der Methode map() kombinierst, kannst du ganz einfach über das Array iterieren und Operationen mit jedem Schlüssel-Wert-Paar durchführen.

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

Beachte jedoch, dass Object.entries() in älteren Browsern (wie dem Internet Explorer) nicht unterstützt wird. Wenn die Browserkompatibilität ein Problem darstellt, musst du eventuell ein Polyfill oder eine alternative Methode verwenden.

Weitere Informationen zu Object.entries() findest du in der MDN-Dokumentation.

Methode 3: Verwendung der forEach()-Methode und der Object.keys()-Methode

Die Methode Object.keys() gibt ein Array mit den aufzählbaren Eigenschaftsnamen (Keys) eines bestimmten Objekts zurück. Mit der Methode forEach() können wir das Array mit den Schlüsseln durchlaufen und über die Schlüssel auf die entsprechenden Werte zugreifen.

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, die Schlüssel eines Objekts zu durchlaufen und auf die entsprechenden Werte zuzugreifen. Diese Methode ist nützlich, wenn du nur die Schlüssel eines Objekts brauchst und Operationen auf der Grundlage dieser Schlüssel durchführen willst.

Ähnlich wie Object.entries() gibt Object.keys() nur die eigenen aufzählbaren Eigenschaften des Objekts zurück, du musst also nicht hasOwnProperty() verwenden, um geerbte Eigenschaften herauszufiltern.

Weitere Informationen zu Object.keys() findest du in der MDN-Dokumentation.

Methode 4: Verwendung der Lodash _.forOwn() Methode

Lodash ist eine beliebte Hilfsbibliothek, die eine Reihe von hilfreichen Funktionen für die Arbeit mit Objekten und Arrays bietet. Wenn du Lodash bereits in deinem Projekt verwendest, kannst du die Methode _.forOwn() nutzen, um die Eigenschaften eines Objekts zu durchlaufen.

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 liefert den Wert und den Schlüssel an die Callback-Funktion. Sie ist eine praktische Alternative zur for...in-Schleife durch object.entries javascript, wenn du bereits Lodash in deinem Projekt verwendest.

Beachte, dass du für die Verwendung von Lodash die Bibliothek installieren und in dein Projekt importieren musst. Wenn du Lodash nicht für andere Zwecke verwendest, ist es vielleicht nicht nötig, es nur für die Objektiteration einzubinden.

Weitere Informationen zu Lodash und seinen js-Schleifen durch Objekt-Iterationsmethoden findest du in der Lodash-Dokumentation.

Methode 5: Object.values()-Methode und forEach()-Methode verwenden

Die Methode Object.values() gibt ein Array mit den aufzählbaren Eigenschaftswerten eines bestimmten Objekts zurück. Mit der forEach()-Methode können wir das Array mit den Werten durch das Objekt durchlaufen. Wenn du auch die entsprechenden Schlüssel benötigst, kannst du die Methode Object.keys() 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() kannst du direkt über die Werte eines Objekts iterieren. Wenn du auch die entsprechenden Schlüssel brauchst, kannst du sie mit Object.keys() erhalten und auf den Schlüssel mit demselben Index wie den Wert zugreifen.

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

Weitere Informationen zu Object.values() findest du in der MDN-Dokumentation.

Einpacken

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

  • Die for...in-Schleife ist ein traditioneller Weg, um über ein Objekt in Javascript zu iterieren. Sie ist einfach und wird weithin unterstützt, erfordert aber eine zusätzliche hasOwnProperty()-Prüfung, um zu vermeiden, dass über geerbte Eigenschaften iteriert wird.
  • Die Methode Object.entries() bietet in Kombination mit map() oder forEach() eine übersichtliche Möglichkeit, sowohl auf Schlüssel als auch auf Werte eines Objekts zuzugreifen. Sie macht hasOwnProperty() überflüssig, wird aber in älteren Browsern möglicherweise nicht unterstützt.
  • Die Methode Object.keys() ermöglicht zusammen mit forEach() die Iteration über die Schlüssel eines Objekts und den Zugriff auf die entsprechenden Werte. Sie ist nützlich, wenn du hauptsächlich mit den Schlüsseln arbeiten musst.
  • Die Methode Lodash _.forOwn() ist eine praktische Option, wenn du Lodash bereits in deinem Projekt verwendest. Sie bietet eine saubere Syntax für die Iteration ü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. Du kannst Object.keys() in Verbindung mit forEach() verwenden, wenn du auch die Schlüssel brauchst.

Wenn du eine Methode zur Iteration über ein JavaScript-Objekt auswählst, solltest du Faktoren wie Browserkompatibilität, Lesbarkeit des Codes und die spezifischen Anforderungen deines Anwendungsfalls berücksichtigen. Für welche Methode du dich auch entscheidest, für eine effiziente JavaScript-Programmierung ist es wichtig zu wissen, wie man effektiv über Objekte iteriert.

Schreibe den Code, auch wenn du Anfänger bist, mit Latenode's AI Assistent

FAQ

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

Die for...in-Schleife durchläuft alle aufzählbaren Eigenschaften eines Objekts, einschließlich der geerbten Eigenschaften aus der Prototypenkette. Sie erfordert eine zusätzliche Prüfung mit hasOwnProperty(), um zu vermeiden, dass über geerbte Eigenschaften iteriert wird. Object.entries() hingegen gibt ein Array mit den aufzählbaren String-Eigenschaftspaaren [key, value] eines bestimmten Objekts zurück, das mit Methoden wie map() oder forEach() einfach durchlaufen werden kann. Object.entries() enthält nur die eigenen Eigenschaften des Objekts, nicht aber geerbte Eigenschaften.

Welche Methode sollte ich verwenden, wenn ich nur Schlüssel oder nur Werte brauche?

Wenn du nur die Schlüssel eines js iterate-Objekts brauchst, kannst du die Methode Object.keys() verwenden, die ein Array mit den Namen der aufzählbaren Eigenschaften eines bestimmten Objekts (Schlüssel) zurückgibt. Wenn du nur die Werte brauchst, kannst du die Methode Object.values() verwenden, die ein Array mit den aufzählbaren Eigenschaftswerten eines bestimmten Objekts zurückgibt.

Welche Methode ist schneller oder effizienter?

Die Leistung der verschiedenen Methoden kann je nach JavaScript-Engine und der Größe des Objekts 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, du hast es mit extrem großen Objekten zu tun. Es wird empfohlen, der Lesbarkeit und Wartbarkeit des Codes den Vorrang zu geben, wenn du keine besonderen Leistungsanforderungen hast.

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 du die Eigenschaften eines Objekts in einer bestimmten Reihenfolge durchlaufen musst, hast du einige Möglichkeiten:

  • Verwende die Methode Object.entries(), um ein Array mit [Schlüssel, Wert]-Paaren zu erhalten, das Array nach den Schlüsseln zu sortieren und dann über das sortierte Array zu iterieren.
  • Erstelle ein Array mit Schlüsseln in der gewünschten Reihenfolge und greife dann über diese Schlüssel auf die entsprechenden Werte des Objekts zu.
  • Verwende eine Map anstelle eines Objekts, da Map die Einfügereihenfolge von Schlüssel-Wert-Paaren beibehält. Du kannst ein Objekt mit new Map(Object.entries(object)) in eine Map umwandeln.

Kann ich Pfeilfunktionen mit diesen Iterationsmethoden verwenden?

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



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


Beachte jedoch, dass Pfeilfunktionen eine lexikalische this-Bindung haben, d.h. sie erben den this-Wert aus dem umgebenden Bereich. Wenn du innerhalb des Iterations-Callbacks auf den this-Kontext zugreifen musst, musst du stattdessen einen regulären Funktionsausdruck verwenden.

Gibt es noch andere Bibliotheken oder Methoden für die Objektiteration?

Ja, es gibt noch einige andere Bibliotheken und Methoden, die Hilfsmittel für die Iteration von Objekten bereitstellen. Einige davon sind sehr beliebt:

  • Underscore.js: Stellt die Methode _.each() zur Verfügung, um über Objekte zu iterieren.
  • Lodash: Bietet verschiedene Methoden wie _.forOwn(), _.forIn() und _.forEach() zur Objektiteration.
  • jQuery: Verfügt über die Methode $.each(), mit der du über Objekte iterieren kannst.

Diese Bibliotheken bieten zusätzliche Funktionen und können hilfreich sein, wenn du sie bereits in deinem Projekt verwendest. Wenn du jedoch nur grundlegende Objektiterationen benötigst, sind die in diesem Artikel besprochenen nativen JavaScript-Methoden ausreichend.

Denk daran, dass die Wahl der Iterationsmethode von deinen spezifischen Anforderungen, deiner Codebasis und deinen persönlichen Vorlieben abhängt. Experimentiere mit verschiedenen Ansätzen und wähle denjenigen aus, der die Lesbarkeit des Codes, die Wartbarkeit und die Effizienz in deinem speziellen Anwendungsfall verbessert.

Verwandte Blogs

Anwendungsfall

Unterstützt von