Array.prototype.every()

Метод every() (кожний) примірників Array перевіряє, чи всі елементи масиву проходять перевірку, реалізовану наданою функцією. Повертає булеве значення.

Спробуйте його в дії

Синтаксис

every(callbackFn)
every(callbackFn, thisArg)

Параметри

callbackFn (функція зворотного виклику)

Функція для виконання на кожному елементі масиву. Вона повинна повертати значення істинності, аби показати, що елемент проходить перевірку, інакше – значення хибності. Ця функція викликається з наступними аргументами:

element (елемент)

Поточний елемент масиву, що обробляється.

index (індекс)

Індекс поточного елемента масиву, що обробляється.

array (масив)

Масив, на котрому викликали every().

thisArg (аргумент this) Необов'язкове

Значення, що буде використовуватись як this при виконанні callbackFn. Докладніше про це – в ітеративних методах

Повернене значення

true, якщо callbackFn не повертає хибне значення для одного з елементів масиву, – в цьому випадку негайно повертається false

Опис

Метод every() є ітеративним методом. Він викликає передану функцію callbackFn один раз для кожного елемента в масиві, поки callbackFn не поверне значення хибності. Якщо такий елемент знайдено, то every() негайно повертає false та зупиняє ітерування масиву. Інакше – якщо callbackFn повертає значення істинності для всіх елементів, то every() повертає true. Більше про те, як загалом працюють такі методи, читайте в розділі ітеративних методів.

every діє як квантор загальності в математиці. Наприклад, для порожнього масиву він повертає true. (Є порожньою істиною те, що всі елементи порожньої множини задовольняють будь-яку умову.)

callbackFn закликається лише для тих індексів масиву, котрим присвоєні значення. Вона не закликається для порожніх комірок у розріджених масивах.

Метод every() є узагальненим. Він лишень очікує, що значення this матиме властивість length, а також властивості з цілочисловими ключами.

Приклади

Перевірка розміру всіх елементів масиву

Наступний приклад перевіряє, чи всі елементи масиву не менші за 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

Перевірка того, чи є один масив підмножиною іншого

Наступний приклад перевіряє, чи всі елементи масиву присутні в іншому масиві.

const isSubset = (array1, array2) =>
  array2.every((element) => array1.includes(element));

console.log(isSubset([1, 2, 3, 4, 5, 6, 7], [5, 7, 6])); // true
console.log(isSubset([1, 2, 3, 4, 5, 6, 7], [5, 8, 7])); // false

Використання третього аргументу callbackFn

Аргумент array корисний тоді, коли є потреба звернутися до іншого елемента масиву. Наступний приклад спочатку використовує filter(), щоб видобути додатні значення, а потім – every(), щоб перевірити, чи відсортований масив у порядку зростання.

const numbers = [-2, 4, -8, 16, -32];
const isIncreasing = numbers
  .filter((num) => num > 0)
  .every((num, idx, arr) => {
    // Без аргументу arr немає способу легко отримати доступ до
    // проміжного масиву без збереження його в змінній.
    if (idx === 0) return true;
    return num > arr[idx - 1];
  });
console.log(isIncreasing); // true

Використання every() на розріджених масивах

every() не запустить свій предикат на порожніх комірках.

console.log([1, , 3].every((x) => x !== undefined)); // true
console.log([2, , 2].every((x) => x === 2)); // true

Виклик every() на об'єктах-немасивах

Метод every() зчитує з this властивість length, а потім звертається до кожної властивості, чий ключ є невід'ємним цілим числом, меншим за length, поки не будуть перебрані вони всі або callbackFn не поверне false.

const arrayLike = {
  length: 3,
  0: "a",
  1: "b",
  2: "c",
  3: 345, // ігнорується every(), оскільки length – 3
};
console.log(
  Array.prototype.every.call(arrayLike, (x) => typeof x === "string"),
); // true

Специфікації

Сумісність із браузерами

desktop mobile server
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
every
Chrome Full support 1
Edge Full support 12
Firefox Full support 1.5
Internet Explorer Full support 9
Opera Full support 9.5
Safari Full support 3
WebView Android Full support 37
Chrome Android Full support 18
Firefox for Android Full support 4
Opera Android Full support 10.1
Safari on iOS Full support 1
Samsung Internet Full support 1.0
Deno Full support 1.0
Node.js Full support 0.10.0

Дивіться також