dedlfix: javascript map() - auf bestimmte Elemente von value zugreifen

Beitrag lesen

problematische Seite

Tach!

hattest du den kompletten Code gesehen und das Array movies[]? Ich weiß halt nicht genau, was value alles enthält und wirklich ist.

Das ergibt sich aus der Funktionsweise der Methoden Array.filter() und Array.map(). Beiden ist gemein, dass sie ein Array durchlaufen und jeweils ein Element davon an die Callback-Funktion übergeben. Somit ist dein "value" jeweils ein Eintrag aus dem movies-Array, mithin also ein movie.

Wenn ich items ausgebe, bekomme ich ein neues Array mit den ersten beiden Elementen aus movies[].

const items = movies.filter(value => value.row === 1).map(value => value);
console.log('items', items);

Daher gehe ich davon aus, das value genau dieses neue Array ist (ist dem so?)

Nein. Zunächst einmal hast du da zweimal "value", das eine in der Callback-Funktion von filter() und das zweite in der Callback-Funktion von map(). Ich nehme an, du meinst in dem Satz das zweite "value". Auch das enthält jeweils nur einen Film und nicht das gesamte - nun gefilterte - Array. Um einzelne Elemente eines Arrays gezielt anzusprechen, brauchst du kein .map(), sondern greifst über die Index-Notation zu.

const filteredMovies = movies.filter(movie => movie.row === 1);
console.log('filteredMovies', filteredMovies);
console.log('erstes Element', filteredMovies[0]);
console.log('zweites Element', filteredMovies[1]);

und man auf die Elemente dieses neuen Arrays auch direkt zugreifen kann:

Ja, aber ohne .map().

Beispiel:

const items = movies.filter(value => value.row === 1).map(value => value[0]);
console.log('items', items);

Was aber so leider undefined zurückgibt.

Ein Debugger ist ein wichtiges Werkzeug zum Erkenntnisgewinn beim Programieren. Die Browser haben einen eingebaut, man muss ihn nur nutzen. Zur Not gibt es das von dir schon verwendete console.log(), mit dem du auch sehen könntest, was "value" wirklich ist: .map(value => console.log(value)).

dedlfix.