Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. Array
  6. Array.prototype.find()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

Array.prototype.find()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨сентябрь 2015 г.⁩.

Сводка

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

Также смотрите методfindIndex(), который возвращаетиндекс найденного в массиве элемента вместо его значения.

Если вам нужно найти позицию элемента или наличие элемента в массиве, используйтеArray.prototype.indexOf() илиArray.prototype.includes() соответственно.

Синтаксис

arr.find(callback[, thisArg])

Параметры

callback

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

element

Текущий обрабатываемый элемент в массиве.

index

Индекс текущего обрабатываемого элемента в массиве.

array

Массив, по которому осуществляется проход.

thisArg

Необязательный параметр. Значение, используемое в качествеthis при выполнении функцииcallback.

Возвращаемое значение

Значение элемента из массива, если элемент прошёл проверку, иначеundefined.

Описание

Методfind вызывает переданную функциюcallback один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернётtrue. Если такой элемент найден, методfind немедленно вернёт значение этого элемента. В противном случае, методfind вернётundefined. До Firefox 34 функцияcallback не вызывалась для «дырок» в массивах (bug 1058394).

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

Если в методfind был передан параметрthisArg, при вызовеcallback он будет использоваться в качестве значенияthis. В противном случае в качестве значенияthis будет использоваться значениеundefined.

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

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

Примеры

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

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

js
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, не найденоconsole.log([4, 5, 8, 12].find(isPrime)); // 5

Полифил

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

// https://tc39.github.io/ecma262/#sec-array.prototype.findif (!Array.prototype.find) {  Object.defineProperty(Array.prototype, 'find', {    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 kValue.        var kValue = o[k];        if (predicate.call(thisArg, kValue, k, o)) {          return kValue;        }        // e. Increase k by 1.        k++;      }      // 7. Return undefined.      return undefined;    },    configurable: true,    writable: true  });}

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

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.find

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

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

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp