array.every(), array.some()

Javascript array every () jedes Element testen, array some (), ob mindestens ein Element mitmacht

array.every() testet, ob jedes Element eines Arrays einer Bedingung gehorcht, array.some() testet, ob ein Element des Arrays einer Bedingung folgt.

every() und some() geben nur zwei mögliche Werte zurück: true oder false.

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.

every some