JavaScript метод .find()ECMAScript 2015

JavaScript Array

Определение и применение

JavaScript метод .find()ECMAScript 2015 возвращает значение первого элемента в массиве, который соответствует условию в переданной функции, или undefined, если ни один элемент не удовлетворяет условию в переданной функции. Функция вызывается один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернёт логическое значение true, при этом значение этого элемента возвращается немедленно (не проверяет оставшиеся значения), или до тех пор пока она не достигнет конца массива, возвращая при этом undefined.


Обращаю Ваше внимание, что функция обратного вызова, переданная в качестве параметра метода find() не будет вызвана для пропущенных элементов массива. Метод find() не изменяет массив для которого он был вызван.


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

Если значения существующих элементов массива изменяются в момент выполнения, то в качестве передаваемого значения функции будет значение в тот момент времени, когда метод find() посещает их. Если элементы удаляются до их посещения, то такие элементы будут посещены.

Поддержка браузерами

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
.find()ECMAScript 201538.028.025.07.1Нет12.0

JavaScript синтаксис:

// только с callback функцией
array.find( function( currentValue, index, arr ) ); 

// с использованием объекта, на который может ссылаться ключевое слово this
array.find( function( currentValue, index, arr ), thisValue ); 

Версия JavaScript

ECMAScript 2015 (6th Edition)

Значения параметров

ПараметрОписание
function Функция обратного вызова, которая будет выполнена один раз для каждого элемента в массиве, пока не вернет логическое значение true, или достигнет конца массива, возвращая при этом undefined. Функция принимает следующие параметры:
  • currentValue - значение текущего элемента
  • index - индекс массива текущего элемента.
  • arr - массив, к которому принадлежит текущий элемент (по которому происходит проход).

Если в качестве параметра метода передается что-то, что не является объектом функции, то будет вызвано исключение TypeError. Обязательный параметр.

thisValueОбъект, на который может ссылаться ключевое слово this внутри функции обратного вызова. Если параметр thisValue не используется, то в качестве значения this будет использоваться undefined (в конечном счете this будет зависеть от обычных правил контекста выполнения функции). Необязательный параметр.

Пример использования

В следующем примере с использованием JavaScript метода find() мы проверим содержится ли в массиве число меньше ноля:

var array = [1, -2, 3, -4]; // инициализируем переменную, содержащую массив числовых значений 

array.find( // проверяем все ли элементы в массиве соответствуют условию заданному в передаваемой функции
  function checkNumber( currentValue ) {
    return currentValue < 0; // проверяем является ли текущее значение меньше нуля
  } // если true, то возвращаем это значение (если массив не содержит такого значение, то undefined)
);// возвращаемое значение -2

// аналогично с использованием стрелочной функции
array.find( currentValue => currentValue < 0 ); // возвращаемое значение -2
array.find( currentValue => currentValue > 0 ); // возвращаемое значение 1

В следующем примере мы рассмотрим использование второго аргумента метода find(), который указывает на объект, на который мы можем ссылаться с использованием ключевого слова this внутри функции обратного вызова:

var numbers = [1, -2, 3, -4]; // инициализируем переменную, содержащую массив числовых значений 
var myObject = { // инициализируем переменную, содержащую объект 
  checkNumber: function( currentValue ) { // метод объекта, который принимает значение  
    return currentValue < 0; // проверяем является ли текущее значение меньше нуля 
  }
};

numbers.find( // находим первый элемент, который соответствуют условию заданному в передаваемой функции
  function( currentValue ) {
    return this.checkNumber( currentValue ); //  возвращаемое значение метода checkNumber объекта myObject
  }, myObject // объект, на который мы ссылаемся с использованием ключевого слова this 
); // если true, то возвращаем это значение (если массив не содержит такого значение, то undefined)
// возвращаемое значение -2
JavaScript Array