some() проверяет, есть ли в массиве хотя бы один элемент, который подходит под условие.
Как только такой элемент найден, метод сразу останавливается и возвращает true.
Синтаксис
array.some(callback)
array.some(callback, thisArg)
callback - функция, которая проверяет каждый элемент массива.
Что делает some()
Метод проходит по массиву слева направо и вызывает callback для каждого элемента.
Если callback хотя бы один раз возвращает true, результатом будет true.
const numbers = [1, 2, 3, 4];
const result = numbers.some((value) => value > 3);
console.log(result); // true
Здесь метод вернул true, потому что в массиве есть элементы больше 3.
Что возвращает some()
some() всегда возвращает булево значение:
true, если найден хотя бы один подходящий элементfalse, если ни один элемент не подошёл
const numbers = [1, 2, 3];
console.log(numbers.some((value) => value > 2)); // true
console.log(numbers.some((value) => value > 10)); // false
Аргументы callback
Callback в some() может получать до трёх аргументов:
array.some((element, index, array) => {
// ...
});
element- текущий элементindex- индекс текущего элементаarray- сам исходный массив
Пример:
const fruits = ["apple", "banana", "orange"];
const result = fruits.some((fruit, index) => {
return index === 1;
});
console.log(result); // true
some() останавливается на первом совпадении
Как только найден подходящий элемент, дальше массив уже не проверяется.
const numbers = [2, 4, 6, 8];
const result = numbers.some((value) => value > 3);
console.log(result); // true
Хотя под условие подходят сразу несколько элементов, методу достаточно одного.
Проверка массива объектов
some() часто используют, когда нужно быстро понять, есть ли в массиве объект с нужным свойством.
const users = [
{ name: "Anna", active: false },
{ name: "Ivan", active: true },
];
const hasActiveUser = users.some((user) => user.active);
console.log(hasActiveUser); // true
Это один из самых типичных сценариев использования метода.
some() не меняет исходный массив
Метод только проверяет элементы и не изменяет массив.
const numbers = [1, 2, 3];
const result = numbers.some((value) => value === 2);
console.log(numbers); // [1, 2, 3]
console.log(result); // true
some() и every()
Эти методы похожи, но отвечают на разные вопросы.
const numbers = [2, 4, 6];
console.log(numbers.some((value) => value > 4)); // true
console.log(numbers.every((value) => value > 4)); // false
some() проверяет, есть ли хотя бы одно совпадение.
every() проверяет, подходят ли все элементы.
some() и filter()
some() возвращает только true или false.
filter() возвращает новый массив подходящих элементов.
const numbers = [1, 2, 3, 4];
console.log(numbers.some((value) => value > 2)); // true
console.log(numbers.filter((value) => value > 2)); // [3, 4]
Если нужна просто проверка, some() обычно лучше.
Пустой массив
Для пустого массива some() всегда возвращает false.
const result = [].some((value) => value > 0);
console.log(result); // false
Это логично: в пустом массиве нет ни одного элемента, который мог бы подойти.
Пустые слоты
some() пропускает пустые слоты массива.
const arr = Array(3);
const result = arr.some((value) => value === undefined);
console.log(result); // false
Callback здесь вообще не вызовется.
Когда это полезно
some() удобно использовать, когда:
- нужно быстро проверить наличие хотя бы одного совпадения
- не нужен сам элемент или его индекс
- нужно проверить массив объектов по условию
Пример:
const products = [
{ name: "Phone", inStock: false },
{ name: "Laptop", inStock: true },
];
const hasInStock = products.some((item) => item.inStock);
console.log(hasInStock); // true
Частые ошибки
Думать, что some() возвращает найденный элемент
const numbers = [1, 2, 3];
const result = numbers.some((value) => value > 1);
console.log(result); // true
Это булево значение, а не 2 или 3.
Путать some() и filter()
const numbers = [1, 2, 3, 4];
console.log(numbers.some((value) => value > 2)); // true
Если нужны сами элементы, нужен не some(), а filter().
Забывать, что пустые слоты пропускаются
const arr = Array(2);
console.log(arr.some((value) => value === undefined)); // false
Callback здесь не выполняется для пустых слотов.
Быстрая памятка
some()проверяет, есть ли хотя бы один подходящий элемент- метод возвращает
trueилиfalse some()останавливается на первом совпадении- исходный массив не меняется
every()проверяет все элементы, аsome()- наличие хотя бы одного совпадения
Коротко
some() - это удобный способ быстро проверить массив на наличие хотя бы одного подходящего элемента. Главное, что стоит запомнить: метод возвращает только true или false, а не сам найденный элемент.