From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../global_objects/array/findindex/index.html | 177 +++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 files/nl/web/javascript/reference/global_objects/array/findindex/index.html (limited to 'files/nl/web/javascript/reference/global_objects/array/findindex/index.html') diff --git a/files/nl/web/javascript/reference/global_objects/array/findindex/index.html b/files/nl/web/javascript/reference/global_objects/array/findindex/index.html new file mode 100644 index 0000000000..906d5465e2 --- /dev/null +++ b/files/nl/web/javascript/reference/global_objects/array/findindex/index.html @@ -0,0 +1,177 @@ +--- +title: Array.prototype.findIndex() +slug: Web/JavaScript/Reference/Global_Objects/Array/findIndex +tags: + - Méthode +translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex +--- +
{{JSRef}}
+ +

De methode findIndex() geeft de index terug van het eerste element in de array waarvoor de gegeven functie voldoet. Indien er geen element wordt gevonden, zal -1 teruggegeven worden.

+ +
{{EmbedInteractiveExample("pages/js/array-findindex.html")}}
+ + + +
 
+ +

Zie ook de methode {{jsxref("Array.find", "find()")}}, die een waarde teruggeeft van het gevonden element in plaats van de index.

+ +

Syntax

+ +
arr.findIndex(callback[, thisArg])
+ +

Parameters

+ +
+
callback
+
De functie die wordt uitgevoerd voor elk element in de array, met volgende drie argumenten: +
+
element
+
Het huidig te evalueren element uit de array.
+
index{{optional_inline}}
+
De index van het huidig te evalueren element binnen de array.
+
array{{optional_inline}}
+
De array waarop de methode findIndex was aangeroepen.
+
+
+
thisArg{{optional_inline}}
+
Optioneel. Het object dat als this kan gebruikt worden tijdens de uitvoer van callback.
+
+ +

Return value

+ +

De index binnen de array van het gevonden element; anders, -1.

+ +

Beschrijving

+ +

De methode findIndex voert de callback function uit voor elke index uit de array 0..length-1 (inclusief) tot wanneer er een element is waarvoor callback een waarde teruggeeft overeenkomstig met true. Als zo een element wordt gevonden, dan geeft findIndex onmiddellijk de index terug van deze iteratie. Als de functie voor geen enkel element voldoet of als length van de array 0 is, zal findIndex -1 teruggeven.  In tegenstelling tot andere array methodes zoals Array#some, wordt callback ook aangeroepen ook voor indexen zonder element in de array.

+ +

callback heeft drie argumenten: de waarde van het element, de index van het element, en het Array element dat wordt doorlopen.

+ +

Als een thisArg parameter wordt opgegeven voor findIndex zal het gebruikt worden als this bij elke aanroep van callback. Als het niet wordt opgegeven dan wordt {{jsxref("undefined")}} gebruikt.

+ +

findIndex past de array waarop het wordt aangeroepen niet aan.

+ +

De reeks van elementen verwerkt door findIndex wordt opgemaakt voor de eerste aanroep van callback. Elementen die aan de array worden toegevoegd na de aanroep van findIndex zullen niet worden doorlopen door callback. Als een bestaand element, dat nog niet werd doorlopen, aangepast wordt door callback, dan zal deze waarde doorgegeven aan callback; verwijderde elementen worden ook doorlopen.

+ +

Examples

+ +

Vind de index van een priemgetal in een array

+ +

Het volgende voorbeeld toont hoe een priemgetal kan gevonden worden in een array met getallen (of -1 als er geen priemgetal in de array zit).

+ +
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
+
+ +

Vind index met een arrow function

+ +

Het volgende voorbeeld toont hoe een element uit de array fruits kan gevonden worden met de arrow function syntax.

+ +
const fruits = ["apple", "banana", "cantaloupe", "blueberries", "grapefruit"];
+
+const index = fruits.findIndex(fruit => fruit === "blueberries");
+
+console.log(index); // 3
+console.log(fruits[index]); // blueberries
+
+ +

Polyfill

+ +
// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
+if (!Array.prototype.findIndex) {
+  Object.defineProperty(Array.prototype, 'findIndex', {
+    value: function(predicate) {
+     // 1. Let O be ? ToObject(this value).
+      if (this == null) {
+        throw new TypeError('"this" is null or not defined');
+      }
+
+      var o = Object(this);
+
+      // 2. Let len be ? ToLength(? Get(O, "length")).
+      var len = o.length >>> 0;
+
+      // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+      if (typeof predicate !== 'function') {
+        throw new TypeError('predicate must be a function');
+      }
+
+      // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+      var thisArg = arguments[1];
+
+      // 5. Let k be 0.
+      var k = 0;
+
+      // 6. Repeat, while k < len
+      while (k < len) {
+        // a. Let Pk be ! ToString(k).
+        // b. Let kValue be ? Get(O, Pk).
+        // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+        // d. If testResult is true, return k.
+        var kValue = o[k];
+        if (predicate.call(thisArg, kValue, k, o)) {
+          return k;
+        }
+        // e. Increase k by 1.
+        k++;
+      }
+
+      // 7. Return -1.
+      return -1;
+    },
+    configurable: true,
+    writable: true
+  });
+}
+
+ +

Als je echt verouderde JavaScript engines moet blijven ondersteunen die Object.defineProperty niet supporteren, is het beter van Array.prototype methodes helemaal niet te voorzien als polyfill, omdat je ze toch niet niet-enumereerbaar kan maken.

+ +

Specificaties

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusComment
{{SpecName('ES2015', '#sec-array.prototype.findindex', 'Array.prototype.findIndex')}}{{Spec2('ES2015')}}Initial definition.
{{SpecName('ESDraft', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}{{Spec2('ESDraft')}} 
+ +

Browser compatibility

+ +
+ + +

{{Compat("javascript.builtins.Array.findIndex")}}

+
+ +

Zie ook

+ + -- cgit v1.2.3-54-g00ecf