From de5c456ebded0e038adbf23db34cc290c8829180 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:49:24 +0100 Subject: unslug pl: move --- .../global_objects/array/findindex/index.html | 214 +++++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 files/pl/web/javascript/reference/global_objects/array/findindex/index.html (limited to 'files/pl/web/javascript/reference/global_objects/array/findindex/index.html') diff --git a/files/pl/web/javascript/reference/global_objects/array/findindex/index.html b/files/pl/web/javascript/reference/global_objects/array/findindex/index.html new file mode 100644 index 0000000000..86a9cf67cf --- /dev/null +++ b/files/pl/web/javascript/reference/global_objects/array/findindex/index.html @@ -0,0 +1,214 @@ +--- +title: Array.prototype.findIndex() +slug: Web/JavaScript/Referencje/Obiekty/Array/findIndex +translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex +--- +
{{JSRef}}
+ +

Metoda findIndex() zwraca indeks pierwszego elementu tablicy, który spełnia kryteria postawione w funkcji testującej. W przeciwnym wypadku zwraca -1.

+ +
function isBigEnough(element) {
+  return element >= 15;
+}
+
+[12, 5, 8, 130, 44].findIndex(isBigEnough);
+// zostanie zwrócony indeks czwartego elementu tablicy,
+// który wynosi 3
+ +

Zobacz także metodę {{jsxref("Array.find", "find()")}}, która zwraca wartość znalezionego elementu, zamiast jego indeksu.

+ +

Składnia

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

Parametry

+ +
+
callback
+
Funkcja wywoływana dla każdej wartości w tablicy, bierze trzy argumenty:
+
+
+
element
+
Obecnie przetwarzany element z tablicy.
+
index
+
Indeks obecnie przetwarzanego elementu z tablicy.
+
array
+
Tablica, na której została wywołana funkcja findIndex.
+
+
+
thisArg
+
Opcjonalny.  Obiekt do użycia jako this w czasie wykonywania callback.
+
+ +

Zwracana wartość

+ +

Indeks elementu tablicy, który pomyślnie przeszedł test, jeśli taki nie zostanie znaleziony, zwraca -1.

+ +

Opis

+ +

Metoda findIndex wykonuje funkcję callback dla każdego indeksu tablicy 0..długość - 1 (włącznie) w tablicy dopóki nie znajdzie tego, na którym funkcja callback zwróci prawdę. Jeśli taki element zostanie znaleziony, findIndex natychmiast zwraca indeks dla tej iteracji. Jeśli callback nigdy nie zwróci prawdy lub wielkość tablicy wynosi 0, findIndex zwróci -1. W przeciwieństwie do innych metod tablicowych takich jak Array#some, w tablicach rzadkich callback jest wywoływany nawet dla indeksów niewystępujących w tablicy.

+ +

callback jest wywoływany z trzema argumentami: wartością elementu, indeksem elementu i przetwarzaną tablicą.

+ +

Jeśli thisArg jest dołączony do findIndex, zostanie użyty jako this dla każdego wywołania . Jeśli nie, zostanie użyte {{jsxref("undefined")}}.

+ +

findIndex nie zmienia tablicy na której jest wywoływany.

+ +

Zakres elementów przetwarzanych przez findIndex jest ustawiany przed pierwszym wywołaniem funkcji callback. Elementy, które są dodane po rozpoczęciu wywołania funkcji findIndex nie będą przetworzone przez callback. Jeśli istniejący, nieodwiedzony element tablicy zostanie zmieniony przez callback, jego wartość przekazana do odwiedzającego callback będzie tą wartością z momentu, w którym findIndex odwiedzi indeks tego elementu, elementy usunięte, nie będą odwiedzone.

+ +

Przykłady

+ +

Znajdź indeks liczby pierwszej w tablicy

+ +

Poniższy przykład znajduje indeks elementu w tablicy, który jest liczbą pierwszą (lub zwraca -1 jeśli nie w tablicy nie ma liczby pierwszej).

+ +
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, nie znaleziono
+console.log([4, 6, 7, 12].findIndex(isPrime)); // 2
+
+ +

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" ma wartość null lub undefined');
+      }
+
+      var o = Object(this);
+
+      // 2. Niech len będzie ? ToLength(? Get(O, "length")).
+      var len = o.length >>> 0;
+
+      // 3. Jeśli IsCallable(predicate) jest fałszem, rzuć wyjątek TypeError.
+      if (typeof predicate !== 'function') {
+        throw new TypeError('predykat musi być funkcją');
+      }
+
+      // 4. Jeśli thisArg został podany, niech T będzie thisArg; w przeciwnym wypadku, niech T będzie undefined.
+      var thisArg = arguments[1];
+
+      // 5. Let k be 0.
+      var k = 0;
+
+      // 6. Powtarzaj, dopóki k < len
+      while (k < len) {
+        // a. Niech Pk będzie ! ToString(k).
+        // b. Niech kValue będzie ? Get(O, Pk).
+        // c. Niech testResult będzie ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+        // d. Jeśli testResult jest prawdą, zwróć k.
+        var kValue = o[k];
+        if (predicate.call(thisArg, kValue, k, o)) {
+          return k;
+        }
+        // e. Zwiększ wartość k o 1.
+        k++;
+      }
+
+      // 7. Return -1.
+      return -1;
+    }
+  });
+}
+
+ +

Jeśli musisz wspierać naprawdę przestarzałe silniki JavaScript, które nie wspierają Object.defineProperty, najlepiej nie korzystać z metod Array.prototype  w ogóle, ponieważ nie można sprawić by były niepoliczalne.

+ +

Specyfikacje

+ + + + + + + + + + + + + + + + + + + +
SpecificationStatusKomentarz
{{SpecName('ES2015', '#sec-array.prototype.findindex', 'Array.prototype.findIndex')}}{{Spec2('ES2015')}}Podstawowa definicja.
{{SpecName('ESDraft', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}{{Spec2('ESDraft')}} 
+ +

Kompatybilność przeglądarek

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerEdgeOperaSafari
Basic support{{CompatChrome(45.0)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop("25.0")}}{{CompatNo}}TakTak{{CompatSafari("7.1")}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidChrome for AndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support{{CompatNo}}45.0{{CompatVersionUnknown}}{{CompatGeckoMobile("25.0")}}{{CompatNo}}{{CompatNo}}8.0
+
+ +

Zobacz także

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