Кратко
Секция статьи "Кратко"Метод массива
позволяет узнать, удовлетворяют ли все элементы в массиве условию в функции-колбэке. Результатом вызова метода
будет boolean-значение true
или false
. Если хотя бы один элемент не будет удовлетворять условию, то результат будет false
.
Пример
Секция статьи "Пример"Данные представляют собой информации о пользователях с именем и флагом, онлайн ли сейчас пользователь:
const users = [ { name: 'Анна', online: true }, { name: 'Михаил', online: true }, { name: 'Саша', online: true },]
const users = [ { name: 'Анна', online: true }, { name: 'Михаил', online: true }, { name: 'Саша', online: true }, ]
Проверка, что все пользователи сейчас онлайн, вернёт true
:
const isAllUsersOnline = users.every(user => { return user.online})console.log(isAllUsersOnline)// true
const isAllUsersOnline = users.every(user => { return user.online }) console.log(isAllUsersOnline) // true
Проверка, что всех пользователей зовут «Анна», вернёт false
:
const isAllUsersAnna = users.every(user => { return user.name === 'Анна'})console.log(isAllUsersAnna);// false
const isAllUsersAnna = users.every(user => { return user.name === 'Анна' }) console.log(isAllUsersAnna); // false
Интерактивный пример:
Как пишется
Секция статьи "Как пишется"В метод
необходимо передать колбэк-функцию, которая должна возвращать boolean-значение, аналогично методам Array.filter или Array.some. Возвращать можно и другие truthy и falsy значения, они преобразуются согласно типу.
Функция, которую мы передаём в метод
, может принимать три параметра:
item
— элемент массива в текущей итерации;index
— индекс текущего элемента;arr
— сам массив, который мы перебираем.
const balls = ['🎾', '🎾', '🎾', '🎾']const areAllBallsAreGreen = balls.every((ball, index, arr) => ball === '🎾')// true
const balls = ['🎾', '🎾', '🎾', '🎾'] const areAllBallsAreGreen = balls.every((ball, index, arr) => ball === '🎾') // true
Как это понять
Секция статьи "Как это понять"Метод
позволяет решить задачу, когда необходимо узнать, что все элементы в массиве соответствуют условию. Метод, по сути, противоположен .some(). В
, чтобы результат выражения стал true
, необходимо, чтобы все элементы удовлетворяли условию функции-предиката.
Для сравнения напишем пример через for
или while
:
const nums = [10, 303, 16, 20, 21]let areGreater = true;for (let i = 0; i < nums.length; i++) { if (nums[i] < 10) { areGreater = false break }}
const nums = [10, 303, 16, 20, 21] let areGreater = true; for (let i = 0; i < nums.length; i++) { if (nums[i] < 10) { areGreater = false break } }
Метод
позволит написать все в одно компактное и понятное выражение.
const nums = [10, 303, 16, 20, 21]const areGreater = nums.every(num => num >= 10)console.log(areGreater);// true
const nums = [10, 303, 16, 20, 21] const areGreater = nums.every(num => num >= 10) console.log(areGreater); // true
На практике
Секция статьи "На практике"🛠 Из-за того, что результат выполнения метода Array
– это boolean-значение, метод можно удобно использовать прямо в условных конструкциях:
const drinks = ['🍺', '🍺', '🍺', '🍺', '🍺']if (drinks.every(drink => drink === '🍺')) { console.log('This is a beer party! 🎉')}
const drinks = ['🍺', '🍺', '🍺', '🍺', '🍺'] if (drinks.every(drink => drink === '🍺')) { console.log('This is a beer party! 🎉') }
Но следует помнить, что проверка пустого массива всегда вернёт true
const drinks = []if (drinks.every(drink => drink === '🍺') { console.log('This is a beer party! 🎉 without BEER :)')}
const drinks = [] if (drinks.every(drink => drink === '🍺') { console.log('This is a beer party! 🎉 without BEER :)') }