tilera: Frage zum Wiki-Artikel „forEach“

problematische Seite

ich habe innerhab des arrays weitere objekte, ungefähr so: [{"name": "someone", "id": "1111"}, {"name": "asdfghjkl", "id": "2222"}] wenn ich mit forEach alle namen, also name abrufen will, wie geht das?

  1. problematische Seite

    Hallo

    ich habe innerhab des arrays weitere objekte, ungefähr so: [{"name": "someone", "id": "1111"}, {"name": "asdfghjkl", "id": "2222"}] wenn ich mit forEach alle namen, also name abrufen will, wie geht das?

    Wenn du modernes JavaScript verwenden kannst und willst, dann so:

    const array = [
    
      { name: 'someone' },
    
      { name: 'someone else' }
    
    ];
    
    
    array.forEach(function ({ name }) {
    
      // do something with name
    
    });
    

    Du kannst das Objekt, das der Rückruffunktion übergeben wird, direkt in der Parameterliste der Funktion destrukturieren, so wie in dem Beispiel oben. Dazu notierst du einfach geschweifte Klammern innerhalb der runden Klammern für die Parameter. Innerhalb der geschweiften Klammern notierst du den Namen der Eigenschaft auf die du zugreifen willst.

    Der Wert der Eigenschaft kann dann innerhalb der Funktion über den angegebenen Namen referenziert werden, wie bei jedem anderen Parameter auch.

    array.forEach(function (object) {
    
      const { name } = object;
    
      // do something with name and object
    
    });
    

    Wenn du zusätzlich eine Referenz auf das Objekt benötigst, kannst du es auch so wie in dem Beispiel oben schreiben. Hier wird nicht bereits in der Parameterliste destrukturiert, sondern erst im Körper der Funktion, bei der Deklaration der Konstante name. Hier wird nun name zum Wert der gleichnamigen Eigenschaft des Objektes aufgelöst und object zu dem Objekt selbst.

    Wenn du aus Kompatibilitätsgründen diese moderne Syntax nicht verwenden kannst, könntest du das auch so schreiben:

    var array = [
    
      { name: 'someone' },
    
      { name: 'someone else' }
    
    ];
    
    
    array.forEach(function (object) {
    
      var name = object.name;
    
      // do something with name and object
    
    });
    

    Hier greifst du über einen Elementausdruck, also object.name auf die Eigenschaft zu. Auch hier sind wieder sowohl die Eigenschaft als auch das Objekt selbst verfügbar.

    Gruß,

    Orlok

    1. problematische Seite

      danke, klappt prima!