Signatur
Beschreibung
find() durchläuft ein typisiertes Array (z. B. Uint8Array, Float32Array, BigInt64Array) in aufsteigender Indexreihenfolge und ruft für jedes Element die Funktion callbackFn auf. Sobald diese einen wahrheitsähnlichen (truthy) Wert zurückgibt, bricht die Suche ab und das gefundene Element wird zurückgegeben. Findet sich kein passendes Element, ist der Rückgabewert undefined.
Die Methode funktioniert genauso wie Array.prototype.find(), ist aber auf typisierte Arrays zugeschnitten. Sie eignet sich zum Beispiel, um in Binärdaten, Sensorwerten oder Audio-Samples den ersten Wert zu finden, der einen Schwellenwert überschreitet.
Benötigt man statt des Werts die Position, verwendet man findIndex(). Für die Suche vom Ende her gibt es findLast() bzw. findLastIndex() (ES2023). Soll nur geprüft werden, ob überhaupt ein Treffer existiert, ist some() oft ausdrucksstärker.
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 durchsuchte typisierte Array). Ein wahrheitsähnlicher Rückgabewert markiert den Treffer. |
|
| $thisArg | any | undefined | Wert, der innerhalb von callbackFn als this verwendet wird. Bei Pfeilfunktionen wirkungslos. |
Rückgabewert
BigInt64Array/BigUint64Array ein bigint), andernfalls undefined.Beispiele
Ersten Wert über einem Schwellenwert finden
const temperaturen = new Float32Array([18.5, 19.2, 22.8, 25.1, 21.0]);
const ersteHitze = temperaturen.find((t) => t > 22);
console.log(ersteHitze);
const frost = temperaturen.find((t) => t < 0);
console.log(frost);
Index und Element gemeinsam nutzen
const bytes = new Uint8Array([0x00, 0x00, 0x7f, 0xff, 0x10]);
// Erstes Nicht-Null-Byte ab Position 1 suchen
const treffer = bytes.find((wert, index) => index >= 1 && wert !== 0);
const position = bytes.findIndex((wert, index) => index >= 1 && wert !== 0);
console.log(`Byte 0x${treffer.toString(16)} an Position ${position}`);
Suche in einem BigInt64Array
const zeitstempel = new BigInt64Array([1_700_000_000n, 1_750_000_000n, 1_800_000_000n]);
const grenze = 1_720_000_000n;
const naechster = zeitstempel.find((ts) => ts > grenze);
console.log(naechster, typeof naechster);
thisArg mit einer normalen Funktion
const pegel = new Int16Array([-120, -80, 300, 1200, 50]);
const config = { max: 1000 };
const uebersteuert = pegel.find(function (wert) {
return Math.abs(wert) > this.max;
}, config);
console.log(uebersteuert);
// Wichtig · Fallstricke
- Treffer vs.
undefined: Anders als bei normalen Arrays können typisierte Arrays keinundefinedenthalten – ein Rückgabewertundefinedbedeutet also immer „nicht gefunden“. Aber Vorsicht: Ein gefundener Wert0ist falsy. Prüfen Sie daher mit=== undefinedund nicht mitif (!ergebnis). - Gleitkomma-Genauigkeit:
Float32Arrayspeichert Werte mit einfacher Genauigkeit, daher liefertfind()z. B.22.799999237060547statt22.8. Vergleiche mit exakten Dezimalwerten (=== 22.8) schlagen dadurch fehl. - BigInt-Arrays: Bei
BigInt64Array/BigUint64Arraysind die Elemente vom Typbigint; Vergleiche mitnumberüber===schlagen fehl (5n === 5istfalse). - Kein generisches Verhalten: Die Methode wirft einen
TypeError, wennthiskein typisiertes Array ist, oder wenn der zugrunde liegendeArrayBufferabgelöst (detached) wurde, z. B. nachpostMessagemit Übertragung. - Kurzschluss: Die Suche stoppt beim ersten Treffer – bei großen Puffern ist
find()daher effizienter alsfilter()[0]. - Kompatibilität: Seit ES2015 in allen modernen Browsern und in Node.js verfügbar (Baseline).
findLast()kam erst mit ES2023 hinzu.