JavaScript метод .find()
JavaScript ArrayОпределение и применение
JavaScript метод .find() возвращает значение первого элемента в массиве, который соответствует условию в переданной функции, или undefined, если ни один элемент не удовлетворяет условию в переданной функции. Функция вызывается один раз для каждого элемента, присутствующего в массиве, до тех пор, пока она не вернёт логическое значение true, при этом значение этого элемента возвращается немедленно (не проверяет оставшиеся значения), или до тех пор пока она не достигнет конца массива, возвращая при этом undefined.
Обращаю Ваше внимание, что функция обратного вызова, переданная в качестве параметра метода find() не будет вызвана для пропущенных элементов массива. Метод find() не изменяет массив для которого он был вызван.
Диапазон элементов, обрабатываемых с помощью метода find() устанавливается перед первым вызовом функции обратного вызова. Если элементы были добавлены к массиву после её вызова, то на таких элементах функция вызвана не будет.
Если значения существующих элементов массива изменяются в момент выполнения, то в качестве передаваемого значения функции будет значение в тот момент времени, когда метод find() посещает их. Если элементы удаляются до их посещения, то такие элементы будут посещены.
Поддержка браузерами
Метод | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|
.find() | 38.0 | 28.0 | 25.0 | 7.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. Функция принимает следующие параметры:
Если в качестве параметра метода передается что-то, что не является объектом функции, то будет вызвано исключение 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) // возвращаемое значение -2JavaScript Array