Кратко
СкопированоМетод массива .every позволяет узнать, удовлетворяют ли все элементы в массиве условию в функции-колбэке. Результатом вызова метода .every будет 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
Интерактивный пример:
Как пишется
СкопированоВ метод .every необходимо передать колбэк-функцию, которая должна возвращать boolean-значение, аналогично методам Array.filter или Array.some. Возвращать можно и другие truthy и falsy значения, они преобразуются согласно типу.
Функция, которую мы передаём в метод .every, может принимать три параметра:
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
Как понять
СкопированоМетод .every позволяет решить задачу, когда необходимо узнать, что все элементы в массиве соответствуют условию. Метод, по сути, противоположен .some(). В .every, чтобы результат выражения стал true, необходимо, чтобы все элементы удовлетворяли условию функции-предиката.
Для сравнения напишем пример через for или while:
const nums = [10, 303, 16, 20, 21]let areGreater = truefor (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
}
}
Метод .every позволит написать все в одно компактное и понятное выражение.
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 :)')
}