Метод Array Every в JavaScript
14 ноября 2022 г.
Иногда с массивами мы хотим проверить каждый элемент на определенное условие. Хотя отдельные условия можно легко проверить с помощью оператора if
, с несколькими элементами массива это становится сложнее. Таким образом, Javascript предоставляет метод для массивов с именем every
, который будет проверять каждый элемент для определенного теста. Если все пройдут тест, общий метод каждый
будет проходить true
. Если один или несколько методов не пройдут тест, общий метод каждый
вернет false
.
Проверка каждого элемента массива для теста
Предположим, у нас есть массив, в котором мы хотим проверить, превышает ли каждое число число 15. Это идеальное место для использования каждого
. Давайте посмотрим.
let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every((el, index, array) => {
return el > 15
});
console.log(check); // true
каждый
принимает функцию типа (el, index, array) => ...код>.
el
– это текущий элемент, через который проходитevery
.index
– это индекс текущего элемента, который повторяется массивом.массив
– это полный массив, по которому выполняется итерация. Здесь это будет[ 25, 35, 45, 55, 65 ]
.
Поскольку стрелочные функции возвращают true, если в одной строке нет инструкции return
, приведенный выше код также можно упростить до этого:
let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every((el, index, array) => el > 15);
console.log(check); // true
Кроме того, метод каждый
может принимать другую форму, в которой он принимает имя функции обратного вызова вместе с пользовательским значением для this
. Это означает, что вы можете создать функцию, а затем подготовить ее содержимое на основе пользовательского this
внутри самой функции. Например, ниже я передаю {value: 15}
в this
, что позволяет нам изменить это значение, если мы захотим, в другое время, когда мы вызываем every код>:
let callbackFn = function(el) {
if(this.value !== undefined) {
return el > this.value
}
return false;
}
let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every(callbackFn, { value: 15 }); // Returns true
Изменение массива методом Every
Как и другие методы работы с массивами, Javascript позволяет модифицировать массив внутри вызываемого метода. Например, мы можем изменить каждый элемент нашего массива, а затем проверить его.
Поскольку каждый
по существу представляет собой тип цикла, каждый элемент зацикливается последовательно:
let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every((el, index, array) => {
arr[index] -= 100;
return el > 5
});
// This is true, since we subtracted 100 from each element before the check
console.log(check); // true
Мы даже можем удалять элементы из массива в цикле every
:
let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every((el, index, array) => {
arr.pop();
return el > 15;
});
console.log(arr); // returns [ 25, 35 ]
Javascript даже позволяет добавлять элементы в массив в every
. Поскольку каждый
срабатывает только один раз для каждого элемента в массиве, это не может привести к бесконечному циклу, просто помещая элементы в исходный массив:
let arr = [ 25, 35, 45, 55, 65 ];
let check = arr.every((el, index, array) => {
arr.push(100);
return el > 15;
});
// This is true, since we subtracted 100 from each element before the check
console.log(arr); // returns [25, 35, 45, 55, 65, 100, 100, 100, 100, 100]
console.log(check); // returns true
Заключение
Метод every
— это встроенный способ выполнения логических тестов целых массивов. Вы должны быть осторожны с этим на больших массивах, так как это может привести к проблемам с производительностью. Однако в большинстве случаев это действительно полезный инструмент, который можно добавить в свой арсенал массивов. Есть много других случаев использования, когда every
очень полезен. Например, вы также можете использовать каждый
для проверить, является ли массив подмножеством другого массива.
Также опубликовано здесь
Оригинал