mozilla
Your Search Results

    Array.prototype.some()

    Сводка

    Метод some() проверяет, удовлетворяет ли хоть какой-нибудь элемент массива условию, заданному в передаваемой функции.

    Синтаксис

    arr.some(callback[, thisArg])

    Параметры

    callback
    Функция проверки каждого элемента, принимает три аргумента:
    currentValue
    Текущий обрабатываемый элемент массива.
    index
    Индекс текущего обрабатываемого элемента массива.
    array
    Массив, по которому осуществляется проход.
    thisArg
    Необязательный параметр. Значение, используемое в качестве this при выполнении функции callback.

    Описание

    Метод 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
    

    Полифилл

    Метод 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.17
    if (!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;
      };
    }
    

    Спецификации

    Спецификация Статус Комментарии
    ECMAScript 5.1 (ECMA-262)
    Определение 'Array.prototype.some' в этой спецификации.
    Стандарт Изначальное определение. Реализована в JavaScript 1.6.
    ECMAScript 6 (ECMA-262)
    Определение 'Array.prototype.some' в этой спецификации.
    Кандидат в рекомендации  

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

    Возможность Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Базовая поддержка (Да) 1.5 (1.8) 9 (Да) (Да)
    Возможность Android Chrome для Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Базовая поддержка (Да) (Да) 1.0 (1.8) (Да) (Да) (Да)

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

    Метки документа и участники

    Contributors to this page: hel-galdr, Mingun, teoli
    Обновлялась последний раз: Mingun,
    Скрыть боковую панель