This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Array.prototype.some()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Методsome() проверяет, удовлетворяет ли какой-либо элемент массива условию, заданному в передаваемой функции.
Примечание:Метод возвращаетfalse при любом условии для пустого массива.
In this article
Интерактивный пример
const array = [1, 2, 3, 4, 5];// Checks whether an element is evenconst even = (element) => element % 2 === 0;console.log(array.some(even));// Expected output: trueСинтаксис
arr.some(callback(element[, index[, array]])[, thisArg])
Параметры
callbackФункция проверки каждого элемента, принимает три аргумента:
elementТекущий обрабатываемый элемент массива.
indexНеобязательныйИндекс текущего обрабатываемого элемента массива.
arrayНеобязательныйМассив, по которому осуществляется проход.
thisArgНеобязательныйЗначение, используемое в качестве
thisпри выполнении функцииcallback.
Возвращаемое значение
true, если функция проверки возвращаетtruthy значение хотя бы для одного элемента массива. Иначе,false.
Описание
Методsome() вызывает переданную функциюcallback один раз для каждого элемента, присутствующего в массиве до тех пор, пока не найдёт такой, для которогоcallback вернётистинное значение (значение, становящееся равнымtrue при приведении его к типуBoolean). Если такой элемент найден, методsome() немедленно вернётtrue. В противном случае, еслиcallback вернётfalse для всех элементов массива, методsome() вернётfalse. Функцияcallback вызывается только для индексов массива, имеющих присвоенные значения; она не вызывается для индексов, которые были удалены или которым значения никогда не присваивались.
Функцияcallback вызывается с тремя аргументами: значением элемента, индексом элемента и массивом, по которому осуществляется проход.
Если в методsome() был передан параметрthisArg, при вызовеcallback он будет использоваться в качестве значенияthis. В противном случае в качестве значенияthis будет использоваться значениеundefined. В конечном итоге, значениеthis, наблюдаемое из функцииcallback, определяется согласнообычным правилам определенияthis, видимого из функции.
Методsome() не изменяет массив, для которого он был вызван.
Диапазон элементов, обрабатываемых методомsome(), устанавливается до первого вызова функцииcallback. Элементы, добавленные в массив после начала выполнения методаsome(), не будут посещены функциейcallback. Если существующие элементы массива изменятся, значения, переданные в функциюcallback, будут значениями на тот момент времени, когда методsome() посетит их; удалённые элементы посещены не будут.
Примеры
>Проверка значений элементов массива
Следующий пример проверяет наличие в массиве элемента, который больше 10.
function isBiggerThan10(element, index, array) { return element > 10;}[2, 5, 8, 1, 4].some(isBiggerThan10); // false[12, 5, 8, 1, 4].some(isBiggerThan10); // trueПроверка элементов массива с использованием стрелочных функций
Стрелочные функции предоставляют более краткий синтаксис для подобных проверок.
[2, 5, 8, 1, 4].some((elem) => elem > 10); // false[12, 5, 8, 1, 4].some((elem) => elem > 10); // trueПроверка наличия элемента в массиве
Чтобы имитировать функцию методаincludes(), эта пользовательская функция возвращает true, если элемент существует в массиве:
const fruits = ["apple", "banana", "mango", "guava"];function checkAvailability(arr, val) { return arr.some(function (arrVal) { return val === arrVal; });}checkAvailability(fruits, "kela"); // falsecheckAvailability(fruits, "banana"); // trueПроверка наличия элемента в массиве с использованием стрелочной функции
const fruits = ["apple", "banana", "mango", "guava"];function checkAvailability(arr, val) { return arr.some((arrVal) => val === arrVal);}checkAvailability(fruits, "kela"); // falsecheckAvailability(fruits, "banana"); // trueПриведение значения к логическому типу
const TRUTHY_VALUES = [true, "true", 1];function getBoolean(value) { "use strict"; if (typeof value === "string") { value = value.toLowerCase().trim(); } return TRUTHY_VALUES.some(function (t) { return t === value; });}getBoolean(false); // falsegetBoolean("false"); // falsegetBoolean(1); // truegetBoolean("true"); // trueПолифил
Методsome() был добавлен к стандарту ECMA-262 в 5-м издании; поэтому он может не присутствовать в других реализациях стандарта. Вы можете работать с ним, добавив следующий код в начало ваших скриптов, он позволяет использоватьsome() в реализациях, которые не поддерживают этот метод. Этот алгоритм является точно тем, что описан в ECMA-262 5-го издания; и предполагает, чтоObject иTypeError имеют свои первоначальные значения и чтоcallback.call вычисляется в оригинальное значениеFunction.prototype.call().
// Шаги алгоритма ECMA-262, 5-е издание, 15.4.4.17// Ссылка (en): http://es5.github.io/#x15.4.4.17// Ссылка (ru): http://es5.javascript.ru/x15.4.html#x15.4.4.17if (!Array.prototype.some) { Array.prototype.some = function (fun /*, thisArg*/) { "use strict"; if (this == null) { throw new TypeError("Array.prototype.some called on null or undefined"); } if (typeof fun !== "function") { throw new TypeError(); } var t = Object(this); var len = t.length >>> 0; var thisArg = arguments.length >= 2 ? arguments[1] : void 0; for (var i = 0; i < len; i++) { if (i in t && fun.call(thisArg, t[i], i, t)) { return true; } } return false; };}Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.some> |