every() в JavaScript

every() - это метод массива, который проверяет, подходят ли все элементы под условие.

let numbers = [12, 18, 25];

let result = numbers.every((number) => number > 10);

console.log(result); // true

Все числа больше 10, поэтому метод вернул true.

Синтаксис

В every() передается callback-функция. Она вызывается для элементов массива по порядку.

let result = array.every((element) => {
  return condition;
});

Если callback-функция для всех элементов вернула true, результатом будет true.

let ages = [18, 21, 30];

let allAdults = ages.every((age) => {
  return age >= 18;
});

console.log(allAdults); // true

Как работает every()

every() нужен, когда важно проверить весь массив целиком.

let scores = [80, 90, 75];

let allPassed = scores.every((score) => score >= 60);

console.log(allPassed); // true

Такой код читается как вопрос: все ли оценки проходят проверку?

Проверка массива объектов

С массивами объектов every() используют, когда нужно проверить одинаковое условие для всех элементов.

let users = [
  { name: 'Анна', active: true },
  { name: 'Олег', active: true },
  { name: 'Мария', active: true },
];

let allActive = users.every((user) => user.active);

console.log(allActive); // true

Здесь метод проверяет, что каждый пользователь активен.

Если хотя бы один элемент не подошел

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

let users = [
  { name: 'Анна', active: true },
  { name: 'Олег', active: false },
  { name: 'Мария', active: true },
];

let allActive = users.every((user) => user.active);

console.log(allActive); // false

Метод останавливается на первом элементе, который не прошел проверку. Дальше массив уже не перебирается.

every() и пустой массив

Для пустого массива every() возвращает true.

let result = [].every((item) => item > 10);

console.log(result); // true

На практике это стоит учитывать, если пустой массив не должен считаться успешной проверкой.

let numbers = [];

let hasNumbersAndAllPositive = numbers.length > 0 && numbers.every((number) => number > 0);

console.log(hasNumbersAndAllPositive); // false

Параметры callback-функции

Callback-функция в every() может принимать три параметра.

element - текущий элемент массива.

index - индекс текущего элемента.

array - исходный массив.

let numbers = [10, 20, 30];

let result = numbers.every((number, index) => {
  return number > index;
});

console.log(result); // true

Обычно достаточно первого параметра. Индекс используют только если проверка зависит от позиции элемента.

Отличие every() от some()

every() проверяет, подходят ли все элементы.

some() проверяет, есть ли хотя бы один подходящий элемент.

let numbers = [2, 4, 7];

let allEven = numbers.every((number) => number % 2 === 0);
let hasEven = numbers.some((number) => number % 2 === 0);

console.log(allEven); // false
console.log(hasEven); // true

Если нужен ответ «все ли подходят» - используйте every(). Если нужен ответ «есть ли хоть один» - some().