Signatur
Beschreibung
every() ruft die übergebene Testfunktion für jedes Element eines typisierten Arrays (z. B. Uint8Array, Float32Array) der Reihe nach auf. Sobald die Funktion einmal einen falsy Wert liefert, bricht die Methode sofort ab und gibt false zurück. Erfüllen alle Elemente den Test, ist das Ergebnis true.
Die Methode verhält sich wie Array.prototype.every(), ist aber auf typisierte Arrays zugeschnitten: Es gibt keine Lücken (sparse Slots), und alle Elemente sind Zahlen bzw. bei BigInt64Array/BigUint64Array BigInts. Typische Einsatzfälle sind Validierungen von Binärdaten, etwa ob alle Bytes eines Puffers null sind, ob Messwerte in einem gültigen Bereich liegen oder ob ein Bild vollständig transparent ist.
Wichtig: Bei einem leeren typisierten Array liefert every() immer true (leere Wahrheit). Die Methode verändert das Array selbst nicht, die Testfunktion könnte es aber verändern – davon ist abzuraten.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $callbackFn Pflicht | (element: number | bigint, index: number, array: TypedArray) => unknown | Testfunktion, die für jedes Element aufgerufen wird. Erhält element (aktueller Wert), index (Position) und array (das typisierte Array selbst). Ein truthy Rückgabewert bedeutet „Test bestanden“. |
|
| $thisArg | any | undefined | Wert, der innerhalb von callbackFn als this verwendet wird. Wirkt nicht bei Pfeilfunktionen. |
Rückgabewert
true, wenn callbackFn für jedes Element einen truthy Wert liefert (oder das Array leer ist), sonst false.Beispiele
Einfache Prüfung: alle Werte positiv?
const werte = new Int16Array([12, 5, 8, 130, 44]);
const allePositiv = werte.every((wert) => wert > 0);
console.log(allePositiv);
const gemischt = new Int16Array([12, -5, 8]);
console.log(gemischt.every((wert) => wert > 0));
Prüfen, ob ein Puffer nur aus Nullbytes besteht
const istLeererPuffer = (buffer) => new Uint8Array(buffer).every((byte) => byte === 0);
const puffer = new ArrayBuffer(16);
console.log(istLeererPuffer(puffer));
new Uint8Array(puffer)[3] = 255;
console.log(istLeererPuffer(puffer));
Sensor-Messwerte gegen Grenzwerte validieren (mit thisArg)
const grenzen = { min: -40, max: 85 };
const temperaturen = new Float32Array([21.5, 23.1, 19.8, 90.2]);
const gueltig = temperaturen.every(function (t) {
return t >= this.min && t <= this.max;
}, grenzen);
console.log(gueltig ? 'Alle Werte gültig' : 'Ausreißer gefunden');
Vollständig transparentes Bild erkennen (Canvas-ImageData)
const canvas = document.createElement('canvas');
canvas.width = canvas.height = 10;
const ctx = canvas.getContext('2d');
const { data } = ctx.getImageData(0, 0, 10, 10); // Uint8ClampedArray, RGBA
// Nur jeden vierten Wert (Alpha-Kanal) prüfen
const transparent = data.every((wert, i) => i % 4 !== 3 || wert === 0);
console.log(transparent);
// Wichtig · Fallstricke
- Leeres Array:
new Uint8Array(0).every(() => false)lieferttrue– bei Validierungen ggf. zusätzlichlength > 0prüfen. - Kurzschluss: Die Iteration stoppt beim ersten falsy Ergebnis; Seiteneffekte in
callbackFnwerden daher nicht für alle Elemente ausgeführt. - BigInt-Arrays: Bei
BigInt64Array/BigUint64Arraysind die Elemente BigInts – Vergleiche wiewert > 0funktionieren, Rechnungen mit Number (wert + 1) werfen dagegen einenTypeError;0nverwenden. - Nicht generisch: Anders als
Array.prototype.every()funktioniert die Methode nur mit echten typisierten Arrays; ein Aufruf percall()auf normalen Arrays wirft einenTypeError. - Abgetrennter Puffer: Ist der zugrunde liegende
ArrayBuffer(z. B. nachpostMessagemit Transfer) abgetrennt, wird einTypeErrorgeworfen. - Performance: Für sehr große Puffer in heißen Schleifen kann eine klassische
for-Schleife schneller sein als der Funktionsaufruf pro Element. - Kompatibilität: in allen modernen Browsern und Node.js seit Jahren verfügbar (Baseline).