JavaScript/Objekte/Array/every

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Die Methode every prüft, ob alle Elemente eines Arrays bestimmte Eigenschaften vorweisen, welche in einer Callback-Funktion definiert wurden. Wird bei der Auswertung des Arrays ein Element gefunden, das den Test nicht besteht, so wird umgehend false zurückgegeben. Wenn umgekehrt jedes Element den aufgestellten Kriterien entspricht, dann ergibt die Methode true.

  • ECMA 5
  • Chrome
  • Firefox
  • IE 9
  • Opera
  • Safari


Beispiel
var check = [2, 3, 5, 7, 11, 13, 17, 19, 23].every(element => element < 25);
 
 
// check = true;


Hierbei werden beginnend mit dem Index [0] die Elemente des Arrays in aufsteigender Reihenfolge durchlaufen, bis entweder ein Element gefunden wurde, das den Kriterien nicht entspricht, oder bis alle Elemente positiv geprüft wurden. Es handelt sich bei dieser Methode gewissermaßen um das Gegenstück zu some. Während some prüft, ob das Array mindestens ein Element enthält, das den gesuchten Eigenschaften entspricht, kann mit every geprüft werden, ob wenigstens eines der Elemente den Kriterien nicht entspricht.


Inhaltsverzeichnis

[Bearbeiten] Parameter

Die Methode every kann zwei Parameter entgegennehmen, nämlich erstens die Callback-Funktion, in der die Suchkriterien definiert werden, sowie einen optionalen zweiten Parameter, der wenn angegeben, beim Aufruf der Callback-Funktion an diese übergeben wird und dort als this Wert fungiert.


  • [ ].every(function (value, index, array) {return boolean}, reference)


An die Callback-Funktion selbst werden von der Methode drei Werte übergeben, und zwar erstens der Wert des Elementes, für das die Funktion aufgerufen wird, zweitens dessen Index und drittens das Array beziehungsweise das Objekt, auf das die Methode angewendet wird.


[Bearbeiten] Rückgabe

Die Methode selbst gibt true zurück, wenn alle Elemente die gesuchten Eigenschaften aufweisen, und false, wenn mindestens ein Element den Test nicht bestanden hat. Die Callback-Funktion muss demnach ebenfalls einen Boolschen Wert zurückgeben, beziehungsweise einen Ausdruck, der sich in einen solchen umwandeln lässt.


[Bearbeiten] Beschreibung

Das Array beziehungsweise das Objekt auf welches die Methode angewendet wird, wird durch sie nicht verändert, jedoch ist es möglich, auch durch die Callback-Funktion selbst das Array zur Laufzeit zu manipulieren.


Beispiel
var planets = ['mercury', 'venus', 'earth', 'mars', 'jupiter', 'saturn', 'uranus', 'pluto'];
 
 
 
var check = planets.every(function (planet) {
 
    planet === 'earth' && this.pop( );
 
    return planet !== 'pluto';
 
}, planets);
 
 
 
// check = true;


Dabei ist zu beachten, dass nur diejenigen Elemente an die Callback-Funktion übergeben werden, die sich zum Zeitpunkt vor deren erstem Aufruf im Array befanden, nicht jedoch Elemente, die zur Laufzeit hinzugefügt wurden. Wird ein Element, das zur Zeit des ersten Aufrufs der Callback-Funktion Teil des Arrays war nachträglich gelöscht, oder wird sein Wert verändert, dann wird dies bei der Untersuchung nur dann berücksichtigt, wenn das entsprechende Element zum Zeitpunkt der Manipulation noch nicht an die Callback-Funktion übergeben wurde.

Davon abgesehen gilt für die Methode every wie für die meisten anderen Array-Methoden auch, dass sie nicht auf Objekte vom Typ Array beschränkt ist, sondern auch anderen Objekttypen hinzugefügt werden kann.


[Bearbeiten] Anwendungsbeispiel

Wenn es nicht bloß darum geht, herauszufinden, ob ein Element des Arrays den gestellten Anforderungen nicht entspricht, sondern zudem gefragt ist, welches der Elemente für das negative Testresultat verantwortlich ist, dann könnte man die Methode every zum Beispiel in einer allgemeiner formulierten Funktion ausführen, welche in dem Fall, dass ein Element den Kriterien nicht entspricht, auch dessen Index ausgibt:


Beispiel
var myArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
 
 
var myCondition = num => num / 2 < 4;
 
 
 
var every = function (object, condition) {
 
    var i = true;
 
    object.every(function (value, index) {
 
        i = condition(value) || index;
 
        return i === true || false;
 
    });
 
    return i;
 
}
 
 
 
var check = every(myArray, myCondition);
 
 
// check = 7;


[Bearbeiten] Quellen

ecma: Array.prototype.every

mdn: Global_Objects/Array/every

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Übersicht
Index
Mitmachen
Werkzeuge
Spenden
SELFHTML