Array.prototype.find()

Dieser Artikel benötigt eine redaktionelle Überprüfung. So können Sie helfen.

Die find() Methode gibt den Wert des ersten Elementes eines Arrays zurück, das die mitgelieferte Testfunktion erfüllt. Ansonsten wird undefined zurückegeben.
 
Siehe auch die findIndex() Methode, die den Index eines gefundenen Elements anstatt dessen Wert zurück gibt.
 

Syntax

arr.find(callback[, thisArg])

Parameter

callback
Funktion, die für jeden Wert des Arrays ausgeführt wird. Sie nimmt drei Argumente:
element
Das aktuelle verarbeitete Element in dem Array.
index
Der Index des aktuell verarbeiteten Elements in dem Array.
array
Das Array, mit dem find aufgerufen wurde.
thisArg
Optional. Objekt welche als this verwendet wird beim Ausführen der callback Funktion.

Rückgabewert

Ein Wert aus dem Array, wenn ein Element den Test besteht, anderfalls undefined.

Beschreibung

Die find Methode führt für jedes Element des Arrays die callback Funktion aus, bis ein Element gefunden wurde, für das die callback Funktion true zurückliefert.

Wenn ein solches Element gefunden wurde, gibt find den Wert dieses Elements sofort zurück. Ansonsten liefert find undefined zurück. Die callback Funktion wird nur für Indizes des Arrays aufgerufen, die einen Wert besitzen. Sie wird nicht für gelöschte Indizes oder für Indizes ohne zugewiesenen Wert aufgerufen.

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

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

find wandelt das ursprüngliche Array nicht ab.

Die Anzahl der zu durchlaufenden Elemente in der find Methode werde vor dem ersten Aufruf der callback Funktion gesetzt. Elemente, die nach dem find Aufruf hinzugefügt wurden, werden nicht von der callback Funktion behandelt.

Wenn ein noch nicht durchlaufenes Element des Arrays von einer callback Funktion geändert wird, wird dieser geänderte Wert der callback Funktion übergeben. Die callback Funktionen bekommen immer den Wert der zum Zeitpunkt des besuchens eines Elementes verfügbar ist. Gelöschte Elemente werden nicht angeschaut.

Beispiele

Beispiel: Finden eines Objektes in einem Array anhand seiner Properties

var inventory = [
    {name: 'apples', quantity: 2},
    {name: 'bananas', quantity: 0},
    {name: 'cherries', quantity: 5}
];

function findCherries(fruit) { 
    return fruit.name === 'cherries';
}

console.log(inventory.find(findCherries)); // { name: 'cherries', quantity: 5 }

Beispiel: Finden einer Primzahl in einem Array

In folgendem Beispiel wird eine Element des Array gefunden, wenn es eine Primzahl ist. Wenn keine Primzahl vorhanden ist liefert isPrime undefined zurück.

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].find(isPrime)); // undefined, not found
console.log([4, 5, 8, 12].find(isPrime)); // 5

Polyfill

Diese Methode wurde in der EMCAScript 2015 Spezifikation hinzugefügt und ist nicht in allen JavaScript Implementationen vorhanden. Jedoch kann man mit folgendem Codeausschnitt einen polyfill für Array.prototype.find erstellen:

if (!Array.prototype.find) {
  Array.prototype.find = function(predicate) {
    'use strict';
    if (this == null) {
      throw new TypeError('Array.prototype.find 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 value;
      }
    }
    return undefined;
  };
}

Spezifikationen

Spezifikation Status Kommentar
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'Array.prototype.find' in dieser Spezifikation.
Standard Initiale Definition.
ECMAScript 2017 Draft (ECMA-262)
Die Definition von 'Array.prototype.find' in dieser Spezifikation.
Entwurf  

Browser Kompabilität

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support 45.0 25.0 (25.0) Nicht unterstützt Nicht unterstützt 7.1
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support Nicht unterstützt Nicht unterstützt 25.0 (25.0) Nicht unterstützt Nicht unterstützt iOS 8

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: db6edr, schlagi123, oliver-j, MelanieVeigl
 Zuletzt aktualisiert von: db6edr,