Start · Sprachen · JavaScript · Referenz · Array.prototype.every()

Array.prototype.every()

Methode

Die <code>every()</code>-Methode prüft, ob alle Elemente eines Arrays eine bereitgestellte Testfunktion erfüllen.

Kategorie: method-property

Signatur

every(callbackFn) / every(callbackFn, thisArg)

Beschreibung

Die every()-Methode von Array-Instanzen gibt false zurück, wenn sie ein Element im Array findet, das die bereitgestellte Testfunktion nicht erfüllt. Andernfalls gibt sie true zurück.

Die every()-Methode ist eine iterative Methode. Sie ruft eine bereitgestellte callbackFn-Funktion einmal für jedes Element in einem Array auf, bis die callbackFn einen falsy Wert zurückgibt. Wird ein solches Element gefunden, gibt every() sofort false zurück und beendet die Iteration durch das Array. Andernfalls, wenn callbackFn für alle Elemente einen truthy Wert zurückgibt, gibt every() true zurück. Weitere Informationen zur allgemeinen Funktionsweise dieser Methoden findest du im Abschnitt zu iterativen Methoden.

every verhält sich wie der „für alle"-Quantor in der Mathematik. Insbesondere gibt sie für ein leeres Array true zurück. (Es ist vakuös wahr, dass alle Elemente der leeren Menge jede gegebene Bedingung erfüllen.)

callbackFn wird nur für Array-Indizes aufgerufen, denen Werte zugewiesen wurden. Sie wird nicht für leere Slots in sparse Arrays aufgerufen.

Die every()-Methode ist generisch. Sie erwartet vom this-Wert lediglich, dass er eine length-Eigenschaft und ganzzahlig indizierte Eigenschaften besitzt.

Parameter

Name Typ Default Beschreibung
$callbackFn Pflicht Function Eine Funktion, die für jedes Element im Array ausgeführt wird. Sie sollte einen truthy Wert zurückgeben, um anzugeben, dass das Element den Test besteht, und andernfalls einen falsy Wert. Die Funktion wird mit den folgenden Argumenten aufgerufen: element (das aktuell verarbeitete Element), index (der Index des aktuell verarbeiteten Elements) und array (das Array, auf dem every() aufgerufen wurde).
$thisArg any Ein Wert, der als this beim Ausführen von callbackFn verwendet wird. Siehe iterative methods.

Rückgabewert

Typ
boolean
Beschreibung
true, sofern callbackFn nicht für ein Array-Element einen falsy Wert zurückgibt; in diesem Fall wird sofort false zurückgegeben.

Beispiele

Größe aller Array-Elemente testen

function isBigEnough(element, index, array) {
  return element >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); // false
[12, 54, 18, 130, 44].every(isBigEnough); // true

Prüfen, ob ein Array eine Teilmenge eines anderen ist

const isSubset = (array1, array2) =>
  array2.every((element) => array1.includes(element));

console.log(isSubset([1, 2, 3, 4, 5, 6, 7], [5, 7, 6])); // true
console.log(isSubset([1, 2, 3, 4, 5, 6, 7], [5, 8, 7])); // false

Verwendung des dritten Arguments von callbackFn

const numbers = [-2, 4, -8, 16, -32];
const isIncreasing = numbers
  .filter((num) => num > 0)
  .every((num, idx, arr) => {
    // Ohne das arr-Argument gibt es keine einfache Möglichkeit, auf das
    // Zwischen-Array zuzugreifen, ohne es in einer Variablen zu speichern.
    if (idx === 0) return true;
    return num > arr[idx - 1];
  });
console.log(isIncreasing); // true

every() auf sparse Arrays anwenden

console.log([1, , 3].every((x) => x !== undefined)); // true
console.log([2, , 2].every((x) => x === 2)); // true

every() auf Nicht-Array-Objekten aufrufen

const arrayLike = {
  length: 3,
  0: "a",
  1: "b",
  2: "c",
  3: 345, // wird von every() ignoriert, da length 3 ist
};
console.log(
  Array.prototype.every.call(arrayLike, (x) => typeof x === "string"),
); // true