JavaScript метод every()

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

JavaScript метод every() позволяет проверить (в порядке возрастания индекса), все ли элементы в массиве соответствуют условию, заданному в передаваемой функции. Работу метода показывает пример «Как проверить все элементы массива».

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

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

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

thisValue задаёт this при вызове обычной функции обратного вызова. Стрелочная функция использует this из внешней области и игнорирует этот аргумент. Сравните пример с thisValue.

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

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.Array.every
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
every✓1✓12✓1.5✓9.5✓3✓18✓4✓10.1✓1✓1.0✓4.4✓1

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
array.every(callback);
array.every(callback, thisValue);

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

ECMAScript: Array.prototype.every.

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

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

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

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

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

true, если все проверки дают истинное значение; false при первой неудачной проверке. Для пустого массива — true.

Особенности

Результат функции преобразуется в логическое значение, поэтому не обязан быть буквально true или false. Сам every() не изменяет массив, но функция обратного вызова может это делать.

Примеры, попробуйте сами

Как проверить все элементы массива

Измените числа или условие проверки. Сравните результаты для всего массива и для пустого массива.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
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
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
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 (все элементы массива больше нуля)