MDN wants to learn about developers like you: https://qsurvey.mozilla.com/s3/MDN-dev-survey

Diese Übersetzung ist unvollständig. Bitte helfen Sie, diesen Artikel aus dem Englischen zu übersetzen.

Die findIndex() Methode gibt den Index des ersten Elementes eines Arrays zurück, das die übergebene Testfunktion erfüllt. Wird kein Element gefunden, wird -1 zurückgegeben.

function isBigEnough(element) {
  return element >= 15;
}

[12, 5, 8, 130, 44].findIndex(isBigEnough); // 3

Siehe auch die find() Methode, die den Wert eines gefundenen Elements anstatt dessen Index zurückgibt.

Syntax

arr.findIndex(callback[, thisArg])

Parameter

callback
Funktion, die für jeden Wert des Arrays ausgeführt wird. Sie nimmt drei Argumente:
element
Das aktuell verarbeitete Element des Arrays.
index
Der Index des aktuell verarbeiteten Elements des Arrays.
array
Das Array , das findIndex aufgerufen hat.
thisArg
Optional. Objekt, welches beim Ausführen der callback Funktion  als this verwendet wird.

Rückgabewert

EIn Index des Arrays, wenn ein Element den Test besteht, andernfalls -1.

Beschreibung

Die findIndex Methode führt die callback Funktion einmal für jeden Index 0..length-1 (inklusive) des Arrays aus, bis ein Element gefunden wurde, für das die callback Funktion einen true-ähnlichen Wert (ein Wert, der als true interpretiert werden kann) zurückliefert. Wird ein solches Element gefunden, gibt findIndex sofort den Index dieses Durchlaufs zurück. Liefert die callback Funktion nie einen true-ähnlichen Wert oder ist die Länge des Arrays gleich 0, gibt findIndex -1 zurück. Im Gegensatz zu anderen Array-Methoden, wie z. B. some(), wird die callback Funktion auch für gelöschte Indizes und Indizes ohne zugewiesenen Wert aufgerufen.

Die callback Funktion nimmt drei Argumente entgegen: den Wert des Elements, den Index des Elements und das Array, das durchlaufen wird.

Wenn thisArg in findIndex angegeben ist, wird es als this für jeden Aufruf der callback Funktion verwendet. Wenn es nicht angegeben wurde, wird undefined verwendet.

findIndex verändert das ursprüngliche Array nicht.

Die Anzahl der zu durchlaufenden Elemente in der findIndex Methode werden vor dem ersten Aufruf der callback Funktion gesetzt. Elemente, die nach dem findIndex Aufruf hinzugefügt wurden, werden nicht von der callback Funktion behandelt.
Wenn ein noch nicht durchlaufenes Element des Arrays von der callback Funktion geändert wird, wird dieser geänderte Wert der callback Funktion übergeben. Die callback Funktion bekommt immer den Wert, der zum Zeitpunkt des Besuchens eines Elementes gesetzt ist. Gelöschte Elemente werden nicht angeschaut.

Beispiele

Beispiel: Finde den Index einer Primzahl in einem Array

Das folgende Beispiel findet den Index des ersten Elements eines Array, das eine Primzahl ist. Oder es gibt -1 zurück falls keine Primzahl in dem Array enthalten ist.

function isPrime(element, index, array) {
  var start = 2;
  while (start <= Math.sqrt(element)) {
    if (element % start++ < 1) {
      return false;
    }
  }
  return element > 1;
}

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

Polyfill

Diese Methode wurde in der ECMAScript 6 Spezifikation hinzugefügt und ist nicht in allen JavaScript Implementationen enthalten. Jedoch kann man mit folgendem Codeausschnitt einen Polyfill für Array.prototype.findIndex erstellen:

if (!Array.prototype.findIndex) {
  Object.defineProperty(Array.prototype, 'findIndex', {
    value: function(predicate) {
      'use strict';
      if (this == null) {
        throw new TypeError('Array.prototype.findIndex called on null or undefined');
      }
      if (typeof predicate !== 'function') {
        throw new TypeError('predicate must be a function');
      }
      var list = Object(this);
      var length = list.length >>> 0;
      var thisArg = arguments[1];
      var value;

      for (var i = 0; i < length; i++) {
        value = list[i];
        if (predicate.call(thisArg, value, i, list)) {
          return i;
        }
      }
      return -1;
    },
    enumerable: false,
    configurable: false,
    writable: false
  });
}

Sollten Sie wirklich veraltete JavaScript Engines unterstützen müssen, die ihrerseits Object.defineProperty nicht unterstützen, ist es ratsam, die Array.prototype Methode gar nicht mit dem Polyfill zu erweitern, da man diese nicht unabzählbar machen kann.

Spezifikationen

Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'Array.prototype.findIndex' in dieser Spezifikation.
Standard Initiale Definition.
ECMAScript Latest Draft (ECMA-262)
Die Definition von 'Array.prototype.findIndex' in dieser Spezifikation.
Lebender Standard  

Browserkompatibilität

Feature Chrome Firefox (Gecko) Internet Explorer Edge Opera Safari

Einfache Unterstützung

45.0 25.0 (25.0) Nicht unterstützt Yes Yes 7.1
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Einfache Unterstützung Nicht unterstützt Nicht unterstützt 25.0 (25.0) Nicht unterstützt Nicht unterstützt 8.0

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: psychotammi, sosnet, labcode-de
 Zuletzt aktualisiert von: psychotammi,