Mit ECMAScript 5 sind native Methoden für die Iteration über Arrays hinzugekommen: for in, forEach, every, some, map, filter, reduce, reduceRight
Jede dieser Methoden arbeitet mit zwei Argumenten: Einer Funktion, die über jedes Element läuft, und einem optionalen Objekt-Scope, in dem die Funktion läuft.
array.map(callback[, thisObject]);
array.every()
array.every() prüft, ob alle Elemente eines Arrays einen Test bestehen.
- Sobald every() ein Element findet, für das die Bedingung nicht zutrifft, gibt every() false zurück und prüft weitere Array-Elemente nicht mehr.
- Wenn alle Elemente den Test bestehen, gibt every() true zurück.
Kurz: every() gibt false zurück, wenn nicht jedes Element true zurück gibt.
Das Beispiel gibt false zurück, weil nichts zurückgegeben wird (und das wird wie null oder undefined zu false konvertiert):
let a = [1, 2, 3, 4, 5 ,6]; let b = a.every (function(item, index, array) { }); console.log(b)
[LOG] false
Das Beispiel gibt false zurück, weil every() null in false konvertiert:
let a = [1, 2, 3, null, 4, 5 ,6]; let b = a.every(function(item, index, array){ return item; }); console.log(b);
[LOG] false
Das Beispiel gibt false zurück, weil colors[1] > 360 den Test nicht besteht.
const colors = [30, 900, 40, 40, 60, 45, 75, 85]; document.getElementById("demo").innerHTML = colors.every(function (num) { return (num < 360 && num >= 0); });
Der Objekt-Scope
["a", "b", "c"].every(function(item, index, arr) { console.log(this); });
[LOG] window
["a", "b", "c"].every(function(item, index, arr) { console.log(this); }, "Apfelkuchen");
[LOG] String {0: "A", 1: "p", 2: "f", 3: "e", 4: "l", 5: "k", 6: "u", 7: "c", 8: "h", 9: "e", …}
array.some()
array.some() prüft, ob ein Element eines Arrays einen Test besteht.
- Sobald some() ein Element findet, für das die Bedingung zutrifft, gibt some() true zurück und prüft weitere Array-Elemente nicht mehr.
- Ansonsten (wenn kein Element der Bedingung entspricht) gibt some() false zurück.
const a = [ null, null, null, 1]; const b = a.some(function(value, key, arr){ return key; }); console.log(b);
[LOG] true
const a = [17, 50, 2000, 25]; const b = a.some(function(value, key, arr){ console.log ("key " + key + " value " + value + " arr " + arr) return value > 2000; }); console.log("b " + b);
[Log] key 0 value 17 arr 17,50,2000,25 [Log] key 1 value 50 arr 17,50,2000,25 [Log] key 2 value 2000 arr 17,50,2000,25 [Log] key 3 value 25 arr 17,50,2000,25 [Log] b false
Browser-Support für every(), some()
Alle modernen Browser, IE ab Version 9.