Кратко
Секция статьи "Кратко"Метод массива 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 }}
const food = ['🍗', '🍖', '🥓', '🥬', '🥩', '🍔'] let hasAnySalad = false for (let i = 0; i < food.length; i++) { if (food[i] === '🥬') { hasAnySalad = true break } }
Метод 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
На практике
Секция статьи "На практике"🛠 Из-за того, что результат выполнения метода Array
– это boolean-значение, метод можно удобно использовать прямо в условных конструкциях:
const drinks = ['🍺', '🍺', '🥃', '🍺', '🍺']if (drinks.some(drink => drink === '🥃')) { console.log('Order whiskey')}
const drinks = ['🍺', '🍺', '🥃', '🍺', '🍺'] if (drinks.some(drink => drink === '🥃')) { console.log('Order whiskey') }