Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. Array
  6. Array.prototype.some()

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

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 при любом условии для пустого массива.

Интерактивный пример

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.

js
function isBiggerThan10(element, index, array) {  return element > 10;}[2, 5, 8, 1, 4].some(isBiggerThan10); // false[12, 5, 8, 1, 4].some(isBiggerThan10); // true

Проверка элементов массива с использованием стрелочных функций

Стрелочные функции предоставляют более краткий синтаксис для подобных проверок.

js
[2, 5, 8, 1, 4].some((elem) => elem > 10); // false[12, 5, 8, 1, 4].some((elem) => elem > 10); // true

Проверка наличия элемента в массиве

Чтобы имитировать функцию методаincludes(), эта пользовательская функция возвращает true, если элемент существует в массиве:

js
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

Проверка наличия элемента в массиве с использованием стрелочной функции

js
const fruits = ["apple", "banana", "mango", "guava"];function checkAvailability(arr, val) {  return arr.some((arrVal) => val === arrVal);}checkAvailability(fruits, "kela"); // falsecheckAvailability(fruits, "banana"); // true

Приведение значения к логическому типу

js
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().

js
// Шаги алгоритма 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

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp