Auf Listen oder einfachen Array ist man es inzwischen schon gewohnt: Anstelle von einfachen Schleifen, bedient man sich hier lieber einem Iterator, oder verfällt ganz und gar dem Funktionalen Ansatz. Aber warum eigentlich? Gerade der funktionale Ansatz liefert eine einheitliches Interface wie man mit Collections umgeht. Den selben Effekt erreiche ich aber auch mit Iteratoren. Eine Liste von Cocktails
var cocktails = [ {id: 1001, name: 'Piña Colada', zutaten: [], prozent: 5.0 }, {id: 1002, name: ' Tequila Sunrise', zutaten: [], prozent: 6.0 }, {id: 1003, name: ' Long Island', zutaten: [], prozent: 7.0 }, ];
lässt sich beispielsweise so nach dem id/name Paar für Cocktails mit mehr als 6% durchsuchen:
var newList = []; for(var i = 0; i <= cocktails.length; i++) { if (cocktails[i].prozent > 6.0) { newList.push({id: cocktails[i].id, title: cocktails[i].title}) } }
Das erfüllt völlig seinen Zweck, aber schön ist das nicht. Mit einer foreach-Funktion könnte das dann so ausshen:
var newList = []; cocktails.forEach(function (cocktail) { if (cocktails[i].prozent > 6.0) { newList.push({id: cocktail.id, title: cocktail.title}) } });
aber noch besser wäre:
var godOnes = cocktails .filter(function (cocktail) { return cocktail.prozent > 6.0; }) .map(function (cocktail) { return {id: cocktail.id, name: cocktail.name}; });