This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Array.prototype.every()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Сводка
Методevery() проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции.
Примечание:Метод возвращаетtrue при любом условии для пустого массива.
In this article
Синтаксис
arr.every(callback(currentValue[, index[, array]])[, thisArg])
Параметры
callbackФункция проверки каждого элемента, принимает три аргумента:
currentValueТекущий обрабатываемый элемент массива.
indexНеобязательныйИндекс текущего обрабатываемого элемента массива.
arrayНеобязательныйМассив, по которому осуществляется проход.
thisArgНеобязательныйНеобязательный параметр. Значение, используемое в качестве
thisпри выполнении функцииcallback.
Возвращаемое значение
true если функция проверки возвращаетtruthy значение для каждого элемента массива. Иначе,false.
Описание
Методevery() вызывает переданную функциюcallback один раз для каждого элемента, присутствующего в массиве до тех пор, пока не найдёт такой, для которогоcallback вернётложное значение (значение, становящееся равнымfalse при приведении его к типуBoolean). Если такой элемент найден, методevery() немедленно вернётfalse. В противном случае, еслиcallback вернётtrue для всех элементов массива, методevery() вернётtrue. Функцияcallback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.
Функцияcallback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.
Если в методevery() был передан параметрthisArg, при вызовеcallback он будет использоваться в качестве значенияthis. В противном случае в качестве значенияthis будет использоваться значениеundefined. В конечном итоге, значениеthis, наблюдаемое из функцииcallback, определяется согласнообычным правилам определенияthis, видимого из функции.
Методevery() не изменяет массив, для которого он был вызван.
Диапазон элементов, обрабатываемых методомevery(), устанавливается до первого вызова функцииcallback. Элементы, добавленные в массив после начала выполнения методаevery(), не будут посещены функциейcallback. Если существующие элементы массива изменятся, значения, переданные в функциюcallback, будут значениями на тот момент времени, когда методevery() посетит их; удалённые элементы посещены не будут.
Методevery() действует подобно квантору всеобщности в математике. В частности, он вернётtrue для пустого массива. Это так называемаябессодержательная истина (vacuously true) — все элементыпустого множества (англ.) удовлетворяют любому заданному условию.
Примеры
>Пример: проверка размера всех элементов массива
Следующий пример проверяет, являются ли все элементы массива числами, большими 10.
function isBigEnough(element, index, array) { return element >= 10;}[12, 5, 8, 130, 44].every(isBigEnough); // false[12, 54, 18, 130, 44].every(isBigEnough); // trueПример: использование стрелочных функций
Стрелочные функции предоставляют более краткий синтаксис для подобных проверок.
[12, 5, 8, 130, 44].every((elem) => elem >= 10); // false[12, 54, 18, 130, 44].every((elem) => elem >= 10); // trueПолифил
Методevery() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может не присутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использоватьevery() в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; и предполагает чтоObject иTypeError имеют свои первоначальные значения и чтоcallback.call вычисляется в оригинальное значениеFunction.prototype.call().
if (!Array.prototype.every) { Array.prototype.every = function (callbackfn, thisArg) { "use strict"; var T, k; if (this == null) { throw new TypeError("this is null or not defined"); } // 1. Положим O равным результату вызова ToObject над значением // this, переданным в качестве аргумента. var O = Object(this); // 2. Положим lenValue равным результату вызова внутреннего метода Get // объекта O с аргументом "length". // 3. Положим len равным ToUint32(lenValue). var len = O.length >>> 0; // 4. Если IsCallable(callbackfn) равен false, выкинем исключение TypeError. if (typeof callbackfn !== "function") { throw new TypeError(); } // 5. Если thisArg присутствует, положим T равным thisArg; иначе положим T равным undefined. if (arguments.length > 1) { T = thisArg; } // 6. Положим k равным 0. k = 0; // 7. Пока k < len, будем повторять while (k < len) { var kValue; // a. Положим Pk равным ToString(k). // Это неявное преобразование для левостороннего операнда в операторе in // b. Положим kPresent равным результату вызова внутреннего метода // HasProperty объекта O с аргументом Pk. // Этот шаг может быть объединён с шагом c // c. Если kPresent равен true, то if (k in O) { // i. Положим kValue равным результату вызова внутреннего метода Get // объекта O с аргументом Pk. kValue = O[k]; // ii. Положим testResult равным результату вызова внутреннего метода Call // функции callbackfn со значением T в качестве this и списком аргументов, // содержащим kValue, k и O. var testResult = callbackfn.call(T, kValue, k, O); // iii. Если ToBoolean(testResult) равен false, вернём false. if (!testResult) { return false; } } k++; } return true; };}Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.every> |