JavaScript метод every()
Определение и применение
JavaScript метод every() позволяет проверить (в порядке возрастания индекса), все ли элементы в массиве
соответствуют условию, заданному в передаваемой функции. Работу метода показывает пример
«Как проверить все элементы массива».
Возвращаемое значение метода будет логическое значение true, если функция обратного вызова возвращает
значение, преобразуемое в true для всех элементов массива, в противном случае вернет логическое значение
false, при том значение false возвращается сразу при нахождении хотя бы одного элемента не
соответствующему заданному условию.
Метод every() всегда возвращает true, когда вызывается на пустом массиве.
Диапазон элементов, обрабатываемых с помощью метода every() устанавливается перед первым вызовом
функции обратного вызова. Элементы, добавленные за пределами исходной длины после начала обхода, не посещаются.
Значение по ещё не посещённому индексу внутри исходного диапазона читается в момент посещения.
Если значения существующих элементов массива изменяются в момент выполнения, то в качестве передаваемого значения
функции будет значение в тот момент времени, когда метод every() посещает их. Если элементы удаляются до
их посещения, то такие элементы посещены не будут.
thisValue задаёт this при вызове обычной функции обратного вызова. Стрелочная функция
использует this из внешней области и игнорирует этот аргумент. Сравните
пример с thisValue.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
every | 1 | 12 | 1.5 | 9.5 | 3 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
array.every(callback);
array.every(callback, thisValue);Спецификация
ECMAScript: Array.prototype.every.
Значения параметров
| Параметр | Описание |
|---|---|
callback |
Функция проверки, которая вызывается не более одного раза для каждого существующего элемента до первого
ложного результата. Функция принимает следующие параметры:
Если в качестве параметра метода передается что-то, что не является объектом функции, то будет вызвано
исключение |
thisValue |
Значение, на которое может ссылаться ключевое слово this внутри функции обратного вызова. Если
параметр thisValue не используется, то в качестве значения this будет использоваться
undefined (в конечном счете this будет зависеть от обычных правил контекста
выполнения функции). Необязательный параметр.
|
Возвращаемое значение
true, если все проверки дают истинное значение; false при первой неудачной проверке. Для
пустого массива — true.
Особенности
Результат функции преобразуется в логическое значение, поэтому не обязан быть буквально true или
false. Сам every() не изменяет массив, но функция обратного вызова может это делать.
Примеры, попробуйте сами
Как проверить все элементы массива
Измените числа или условие проверки. Сравните результаты для всего массива и для пустого массива.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
var array = [1, 2, 3] // инициализируем переменную, содержащую массив числовых значений
console.log(
array.every(
// проверяем все ли элементы в массиве соответствуют условию заданному в передаваемой функции
function checkNumber(currentValue) {
return currentValue > 0 // проверяем является ли текущее значение больше нуля
} // возвращаемое значение будет true (все элементы массива больше нуля)
)
)
// аналогично с использованием стрелочной функции
console.log(array.every((currentValue) => currentValue > 0)) // возвращаемое значение true
console.log(array.every((currentValue) => currentValue < 0)) // возвращаемое значение false
// Пустой массив не вызывает функцию проверки.
console.log(
'Пустой массив:',
[].every(() => false)
)
Как использовать thisValue в every()
В следующем примере мы рассмотрим использование второго аргумента метода every(), который указывает на объект, на который мы можем ссылаться с использованием ключевого слова this внутри функции обратного вызова: Измените метод объекта и запустите код. Сравните результат; замените обычную callback-функцию стрелочной и проверьте, почему thisValue перестаёт задавать this.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
var numbers = [1, 2, 3] // инициализируем переменную, содержащую массив числовых значений
var myObject = {
// инициализируем переменную, содержащую объект
checkNumber: function (currentValue) {
// метод объекта, который принимает значение
return currentValue > 0 // проверяем является ли текущее значение больше нуля
},
}
console.log(
numbers.every(
// проверяем все ли элементы в массиве соответствуют условию заданному в передаваемой функции
function (currentValue) {
return this.checkNumber(currentValue) // возвращаемое значение метода checkNumber объекта myObject
},
myObject // объект, на который мы ссылаемся с использованием ключевого слова this
)
) // возвращаемое значение будет true (все элементы массива больше нуля)