Signatur
Beschreibung
Die Methode some() ruft die übergebene Testfunktion callbackFn für jedes Element eines typisierten Arrays (z. B. Uint8Array, Float32Array) der Reihe nach auf. Sobald die Funktion einen truthy Wert liefert, bricht some() sofort ab und gibt true zurück. Liefert die Funktion für kein Element einen truthy Wert, lautet das Ergebnis false.
Der Algorithmus ist derselbe wie bei Array.prototype.some(). Weil typisierte Arrays aber immer eine feste Länge haben und keine Lücken enthalten können, wird die Testfunktion auch wirklich für jeden Index bis zum ersten Treffer aufgerufen.
Typische Anwendungsfälle: prüfen, ob in Binärdaten ein bestimmter Bytewert vorkommt, ob Messwerte oder Audio-Samples einen Grenzwert überschreiten oder ob ein Puffer ungültige Werte wie NaN enthält. Die Methode verändert das Array nicht. Die Testfunktion selbst könnte es aber verändern, was man vermeiden sollte.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $callbackFn Pflicht | (element: number | bigint, index: number, array: TypedArray) => unknown | Testfunktion, die für jedes Element aufgerufen wird. Sie bekommt element (den aktuellen Wert), index (dessen Position) und array (das typisierte Array selbst). Gibt sie einen truthy Wert zurück, gilt das Element als Treffer. |
|
| $thisArg | any | undefined | Wert, der beim Aufruf von callbackFn als this gilt. Bei Pfeilfunktionen hat er keine Wirkung. |
Beispiele
Grenzwert in Messwerten erkennen
const temperaturen = new Float32Array([21.5, 22.1, 38.7, 20.9]);
const ueberhitzt = temperaturen.some((wert) => wert > 35);
console.log(ueberhitzt);
Leeres Array und fehlender Treffer
const leer = new Uint8Array(0);
console.log(leer.some(() => true));
const bytes = new Uint8Array([1, 2, 3]);
console.log(bytes.some((b) => b === 0));
Ungültige Werte (NaN) in einem Puffer finden
const samples = new Float64Array([0.1, NaN, 0.3]);
const hatNaN = samples.some(Number.isNaN);
console.log(hatNaN);
Dateisignatur prüfen: kommt ein Null-Byte vor?
const pruefeBinaer = async (url) => {
const response = await fetch(url);
const bytes = new Uint8Array(await response.arrayBuffer());
// Null-Bytes in den ersten 512 Bytes deuten auf eine Binärdatei hin
return bytes.subarray(0, 512).some((b) => b === 0x00);
};
pruefeBinaer('/logo.png').then((istBinaer) => console.log(istBinaer));
// Wichtig · Fallstricke
- Vorzeitiger Abbruch:
some()hört beim ersten Treffer auf. Nebenwirkungen in der Testfunktion finden daher nicht für alle Elemente statt. - Kein Array-Ersatz: Die Methode gibt es nur auf typisierten Arrays. Mit
TypedArray.prototype.some.call()lässt sie sich nicht auf normale Arrays anwenden, denn das löst einenTypeErroraus. - BigInt-Arrays: Bei
BigInt64ArrayundBigUint64Arraysind die Elemente vom Typbigint. Vergleiche müssen dann BigInt-Literale verwenden, z. B.x > 10n. Ein Vergleich wiex === 10ist immerfalse. - Abgelöster Puffer: Wurde der zugrunde liegende
ArrayBufferabgelöst, etwa pertransfer()oderpostMessagemit Transfer-Liste, löst der Aufruf einenTypeErroraus. - Nur Existenz prüfen: Wenn nur ein bestimmter Wert gesucht wird, ist
includes()kürzer und oft schneller. Für die Position des Treffers eignet sichfindIndex(). - Kompatibilität: Wird von allen modernen Browsern und von Node.js unterstützt (Baseline).