Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Array.prototype.findIndex()

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2015 browserübergreifend verfügbar.

Die Methode findIndex() von Array-Instanzen gibt den Index des ersten Elements in einem Array zurück, das die angegebene Testfunktion erfüllt. Wenn kein Element die Testfunktion erfüllt, wird -1 zurückgegeben.

Siehe auch die Methode find(), die das erste Element zurückgibt, das die Testfunktion erfüllt (anstatt dessen Index).

Probieren Sie es aus

const array = [5, 12, 8, 130, 44];

const isLargeNumber = (element) => element > 13;

console.log(array.findIndex(isLargeNumber));
// Expected output: 3

Syntax

js
findIndex(callbackFn)
findIndex(callbackFn, thisArg)

Parameter

callbackFn

Eine Funktion, die für jedes Element im Array ausgeführt wird. Sie sollte einen truthy-Wert zurückgeben, wenn ein passendes Element gefunden wurde, andernfalls einen falsy-Wert. Die Funktion wird mit den folgenden Argumenten aufgerufen:

element

Das aktuelle Element, das im Array verarbeitet wird.

index

Der Index des aktuellen Elements, das im Array verarbeitet wird.

array

Das Array, für das findIndex() aufgerufen wurde.

thisArg Optional

Ein Wert, der bei der Ausführung von callbackFn als this verwendet wird. Siehe iterative Methoden.

Rückgabewert

Der Index des ersten Elements im Array, das den Test besteht. Andernfalls -1.

Beschreibung

Die Methode findIndex() ist eine iterative Methode. Sie ruft die angegebene Funktion callbackFn für jedes Element eines Arrays einmal in aufsteigender Reihenfolge der Indizes auf, bis callbackFn einen truthy-Wert zurückgibt. findIndex() gibt dann den Index dieses Elements zurück und beendet die Iteration über das Array. Wenn callbackFn nie einen truthy-Wert zurückgibt, gibt findIndex() -1 zurück. Weitere Informationen zur allgemeinen Funktionsweise dieser Methoden finden Sie im Abschnitt über iterative Methoden.

callbackFn wird für jeden Index des Arrays aufgerufen, nicht nur für Indizes mit zugewiesenen Werten. Leere Plätze in spärlich besetzten Arrays verhalten sich wie undefined.

Die Methode findIndex() ist generisch. Sie setzt lediglich voraus, dass der this-Wert eine length-Eigenschaft und Eigenschaften mit ganzzahligen Schlüsseln besitzt.

Beispiele

Den Index der ersten Primzahl in einem Array finden

Das folgende Beispiel gibt den Index des ersten Elements im Array zurück, das eine Primzahl ist, oder -1, wenn keine Primzahl vorhanden ist.

js
function isPrime(n) {
  if (n < 2) {
    return false;
  }
  if (n % 2 === 0) {
    return n === 2;
  }
  for (let factor = 3; factor * factor <= n; factor += 2) {
    if (n % factor === 0) {
      return false;
    }
  }
  return true;
}

console.log([4, 6, 8, 9, 12].findIndex(isPrime)); // -1, not found
console.log([4, 6, 7, 9, 12].findIndex(isPrime)); // 2 (array[2] is 7)

Hinweis: Die Implementierung von isPrime() dient nur zur Veranschaulichung. In einer realen Anwendung sollten Sie einen Algorithmus mit umfassender Memoisierung wie das Sieb des Eratosthenes verwenden, um wiederholte Berechnungen zu vermeiden.

Das dritte Argument von callbackFn verwenden

Das Argument array ist nützlich, wenn Sie auf ein anderes Element im Array zugreifen möchten, insbesondere wenn keine Variable vorhanden ist, die auf das Array verweist. Das folgende Beispiel verwendet zunächst filter(), um die positiven Werte zu extrahieren, und anschließend findIndex(), um das erste Element zu finden, das kleiner als seine Nachbarelemente ist.

js
const numbers = [3, -1, 1, 4, 1, 5, 9, 2, 6];
const firstTrough = numbers
  .filter((num) => num > 0)
  .findIndex((num, idx, arr) => {
    // Without the arr argument, there's no way to easily access the
    // intermediate array without saving it to a variable.
    if (idx > 0 && num >= arr[idx - 1]) return false;
    if (idx < arr.length - 1 && num >= arr[idx + 1]) return false;
    return true;
  });
console.log(firstTrough); // 1

findIndex() auf spärlich besetzten Arrays verwenden

Sie können in einem spärlich besetzten Array nach undefined suchen und so den Index eines leeren Platzes erhalten.

js
console.log([1, , 3].findIndex((x) => x === undefined)); // 1

findIndex() für Objekte aufrufen, die keine Arrays sind

Die Methode findIndex() liest die length-Eigenschaft von this und greift dann auf jede Eigenschaft zu, deren Schlüssel eine nichtnegative ganze Zahl kleiner als length ist.

js
const arrayLike = {
  length: 3,
  "-1": 0.1, // ignored by findIndex() since -1 < 0
  0: 2,
  1: 7.3,
  2: 4,
};
console.log(
  Array.prototype.findIndex.call(arrayLike, (x) => !Number.isInteger(x)),
); // 1

Spezifikationen

Spezifikation
ECMAScript® 2027 Language Specification
# sec-array.prototype.findindex

Browser-Kompatibilität

Siehe auch