MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/8d22564490d8

Array.prototype.find()

De find()-methode geeft een waarde terug uit de array wanneer een element in de array aan de opgegeven testfunctie voldoet. In andere gevallen wordt undefined teruggegeven.

Zie ook de findIndex()-methode, die de index van het gevonden element in de array teruggeeft in plaats van de waarde zelf.

Syntaxis

arr.find(callback[, thisArg])

Parameters

callback
Functie om voor alle waarden in de array uit te voeren, die drie argumenten accepteert:
element
Het huidige element uit de array dat wordt verwerkt.
index
De index van het huidige element uit de array dat wordt verwerkt.
array
De array waarop find werd aangeroepen.
thisArg
Optioneel. Object om voor this te gebruiken tijdens het uitvoeren van callback.

Retourwaarde

Een waarde in de array als een element aan de testfunctie voldoet, anders undefined.

Beschrijving

De find-methode voert de callback-functie eenmaal per aanwezig element in de array uit, totdat er één wordt gevonden waarvoor callback een waarde true teruggeeft. Als een dergelijk element wordt gevonden, geeft find direct de waarde van dat element terug. In andere gevallen geeft find undefined terug nadat alle elementen uit de array zijn doorlopen. callback wordt alleen aangeroepen voor indexen van de array waaraan een waarde is toegekend; de functie wordt niet aangeroepen voor indexen die zijn verwijderd of waaraan nooit een waarde is toegekend.

callback wordt aangeroepen met drie argumenten: de waarde van het element, de index van het element en het Array-object waarover wordt geïtereerd.

Als een thisArg-parameter aan find wordt meegegeven, wordt deze voor elke aanroep van callback gebruikt als de waarde voor this. Als er geen waarde voor is opgegeven, wordt undefined gebruikt.

find wijzigt de array waarop de methode wordt aangeroepen niet.

Het bereik van de elementen die door find worden verwerkt, wordt ingesteld voor de eerste aanroep van callback. Elementen die aan de array worden toegevoegd nadat de aanroep naar find begint, worden niet door callback bezocht. Als een bestaand, maar nog niet bezocht element van de array door callback wordt gewijzigd, zal de waarde van dit element die aan callback wordt meegegeven de waarde worden die eraan was toegekend op het moment dat find de index van dat element bereikte; verwijderde elementen worden niet bezocht.

Voorbeelden

Een object in een array zoeken via een van zijn eigenschappen

var voorraad = [
    {naam: 'appels', aantal: 2},
    {naam: 'bananen', aantal: 0},
    {naam: 'kersen', aantal: 5}
];

function zoekKersen(fruit) { 
    return fruit.naam === 'kersen';
}

console.log(voorraad.find(zoekKersen)); // { naam: 'kersen', aantal: 5 }

Een priemgetal in een array zoeken

Het volgende voorbeeld zoekt een element in de array dat een priemgetal is (of geeft undefined terug als er geen priemgetal is).

function isPriem(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(isPriem)); // niet gedefinieerd, niet gevonden
console.log([4, 5, 8, 12].find(isPriem)); // 5

Polyfill

Deze methode is aan de ECMAScript 2015-specificatie toegevoegd en is mogelijk nog niet in alle JavaScript-implementaties beschikbaar. Met de volgende snippet kan Array.prototype.find echter worden ‘gepolyfilled’:

if (!Array.prototype.find) {
  Array.prototype.find = function(predicate) {
    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;
  };
}

Specificaties

Specificatie Status Opmerking
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Array.prototype.find' in that specification.
Standard Eerste definitie.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Array.prototype.find' in that specification.
Draft  

Browsercompatibiliteit

Functie Chrome Firefox (Gecko) Internet Explorer Edge Opera Safari
Basisondersteuning 45.0 25.0 (25.0) No support 12 No support 7.1
Functie Android Chrome voor Android Firefox Mobile (Gecko) IE Mobile Edge Opera Mobile Safari Mobile
Basisondersteuning No support No support 25.0 (25.0) No support 12 No support 8.0

Zie ook

Documentlabels en -medewerkers

 Aan deze pagina hebben bijgedragen: jhkuperus, Tonnes
 Laatst bijgewerkt door: jhkuperus,