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 | 138 +++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 files/ru/web/javascript/reference/global_objects/array/findindex/index.html (limited to 'files/ru/web/javascript/reference/global_objects/array/findindex/index.html') diff --git a/files/ru/web/javascript/reference/global_objects/array/findindex/index.html b/files/ru/web/javascript/reference/global_objects/array/findindex/index.html new file mode 100644 index 0000000000..7cbc30e738 --- /dev/null +++ b/files/ru/web/javascript/reference/global_objects/array/findindex/index.html @@ -0,0 +1,138 @@ +--- +title: Array.prototype.findIndex() +slug: Web/JavaScript/Reference/Global_Objects/Array/findIndex +tags: + - Array + - ECMAScript6 + - Experimental + - Expérimental(2) + - JavaScript + - Method + - Prototype + - Reference + - Référence(2) + - polyfill +translation_of: Web/JavaScript/Reference/Global_Objects/Array/findIndex +--- +
{{JSRef("Global_Objects", "Array")}}
+ +

Сводка

+ +

Метод findIndex() возвращает индекс в массиве, если элемент удовлетворяет условию проверяющей функции. В противном случае возвращается -1.

+ +

Также смотрите метод {{jsxref("Array.find", "find()")}}, который возвращает значение найденного в массиве элемента вместо его индекса.

+ +

Синтаксис

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

Параметры

+ +
+
callback
+
Функция, вызывающаяся для каждого значения в масиве, принимает три аргумента: +
+
element
+
Текущий обрабатываемый элемент в массиве.
+
index
+
Индекс текущего обрабатываемого элемента в массиве.
+
array
+
Массив, по которому осуществляется проход.
+
+
+
thisArg
+
Необязательный параметр. Значение, используемое в качестве this при выполнении функции callback.
+
+ +

Описание

+ +

Метод findIndex вызывает переданную функцию callback один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернёт true. Если такой элемент найден, метод findIndex немедленно вернёт индекс этого элемента. В противном случае, метод findIndex вернёт -1. Функция callback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.

+ +

Функция callback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.

+ +

Если в метод findIndex был передан параметр thisArg, при вызове callback он будет использоваться в качестве значения this. В противном случае в качестве значения this будет использоваться значение {{jsxref("Global_Objects/undefined", "undefined")}}.

+ +

Метод findIndex не изменяет массив, для которого он был вызван.

+ +

Диапазон элементов, обрабатываемых методом findIndex, устанавливается до первого вызова функции callback. Элементы, добавленные в массив после начала выполнения метода findIndex, не будут посещены функцией callback. Если существующие, непосещённые элементы массива изменяются функцией callback, их значения, переданные в функцию, будут значениями на тот момент времени, когда метод findIndex посетит их; удалённые элементы посещены не будут.

+ +

Примеры

+ +

Пример: поиск индекса простого числа в массиве

+ +

Следующий пример находит в массиве индекс элемента, являющийся простым числом (либо возвращает -1, если в массиве нет простых чисел).

+ +
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, не найдено
+console.log([4, 6, 7, 12].findIndex(isPrime)); // 2
+
+ +

Полифилл

+ +

Этот метод был добавлен в спецификации ECMAScript 6 и пока может быть недоступен во всех реализациях JavaScript. Однако, вы можете использовать следующий кусочек кода в качестве полифилла:

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

Спецификации

+ + + + + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарии
{{SpecName('ES6', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}{{Spec2('ES6')}}Изначальное определение.
{{SpecName('ESDraft', '#sec-array.prototype.findIndex', 'Array.prototype.findIndex')}}{{Spec2('ESDraft')}} 
+ +

Совместимость с браузерами

+ +

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

+ +

Смотрите также

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