Кратко
СкопированоМетод массива some позволяет узнать, есть ли в массиве хотя бы один элемент, удовлетворяющий условию в функции-колбэке. Колбэк-функция будет вызываться для каждого элемента массива до тех пор, пока не вернётся true, либо пока не закончатся элементы массива.
Результатом вызова метода some будет boolean-значение true или false. Если ни один элемент в массиве не удовлетворит условию, то результат будет false.
Пример
СкопированоПроверим, есть ли в массиве хотя бы одно чётное число:
const nums = [3, 5, 7, 8, 9, 11]const hasEvenNumber = nums.some(num => { return num % 2 === 0})console.log(hasEvenNumber)// trueconst oddNums = [3, 5, 7, 9, 11]const noEvenNumber = oddNums.some(num => { return num % 2 === 0})console.log(noEvenNumber)// false
const nums = [3, 5, 7, 8, 9, 11]
const hasEvenNumber = nums.some(num => {
return num % 2 === 0
})
console.log(hasEvenNumber)
// true
const oddNums = [3, 5, 7, 9, 11]
const noEvenNumber = oddNums.some(num => {
return num % 2 === 0
})
console.log(noEvenNumber)
// false
Интерактивный пример:
Как пишется
СкопированоЧтобы использовать метод some, ему необходимо передать колбэк-функцию, которая должна возвращать boolean-значение аналогично методам filter и every. Возвращать можно и другие truthy и falsy значения, они преобразуются согласно типу.
Функция, которую мы передаём в метод some, может принимать три параметра:
item— элемент массива в текущей итерации;index— индекс текущего элемента;arr— сам массив, который мы перебираем.
const balls = ['🎾', '🏈', '🎾', '🎾']const areAllBallsGreen = balls.some( (ball, index, arr) => ball === '🏈')console.log(areAllBallsGreen)// true
const balls = ['🎾', '🏈', '🎾', '🎾']
const areAllBallsGreen = balls.some(
(ball, index, arr) => ball === '🏈'
)
console.log(areAllBallsGreen)
// true
Как понять
СкопированоМетод some позволяет упростить написание кода в случае, когда мы хотим проверить наличие определённого элемента в массиве. В отличие от every, чтобы результат выражения стал true, достаточно, чтобы хотя бы один элемент удовлетворил условию функции-предиката.
Для сравнения напишем пример через for или while:
const food = [ '🍗', '🍖', '🥓', '🥬', '🥩', '🍔']let hasAnySalad = falsefor (let i = 0; i < food.length; i++) { if (food[i] === '🥬') { hasAnySalad = true break }}console.log(hasAnySalad);// true
const food = [
'🍗', '🍖', '🥓', '🥬', '🥩', '🍔'
]
let hasAnySalad = false
for (let i = 0; i < food.length; i++) {
if (food[i] === '🥬') {
hasAnySalad = true
break
}
}
console.log(hasAnySalad);
// true
Метод some позволит написать меньше кода и сделать его понятнее:
const food = [ '🍗', '🍖', '🥓', '🥬', '🥩', '🍔']const hasAnySalad = food.some(item => item === '🥬')console.log(hasAnySalad)// true
const food = [
'🍗', '🍖', '🥓', '🥬', '🥩', '🍔'
]
const hasAnySalad = food.some(item => item === '🥬')
console.log(hasAnySalad)
// true
На практике
Скопированосоветует
Скопировано🛠 Из-за того, что результат выполнения метода some – это boolean-значение, метод можно удобно использовать прямо в условных конструкциях:
const drinks = ['🍺', '🍺', '🥃', '🍺', '🍺']if (drinks.some(drink => drink === '🥃')) { console.log('Order whiskey')}
const drinks = ['🍺', '🍺', '🥃', '🍺', '🍺']
if (drinks.some(drink => drink === '🥃')) {
console.log('Order whiskey')
}