Array.prototype.some()

El m猫tode some() comprova si un algun element de l'array passa el test implementat per la funci贸 proporcionada com a argument.

Sintaxi

arr.some(callback[, thisArg])

Par脿metres

callback
Funci贸 utilitzada com a test per a cada element, rep tres arguments:
valorActual
L'element de l'array que est脿 sent avaluat.
posici贸
La posici贸 que l'element passat al primer par脿metre ocupa dins l'array.
array
L'array des del que s'ha cridat el m猫tode some().
thisArg
Opcional. Valor que valdr脿 la variable this quan s'estigui executant la funci贸 callback.

Valor retornat

Aquesta funci贸 retorna true si la funci贸 callback retorna true per a almenys un element de l'array; en qualsevol altre cas retorna false.

Descripci贸

some() executa la funci贸 callback un cop per a cada element present a l'array fins que troba un per al qual callback retorna true. Si es troba aquest element, some() retorna true immediatament. En cas contrari some() retornar脿 false. Nom茅s s'invocar脿 la funci贸 callback en les posicions de l'array que tinguin un valor assignat, 茅s a dir, mai es cridar脿 per a posicions que han estat esborrades o el valor de les quals no ha estat mai assignat.

S'invoca callback amb tres arguments: el valor de l'element, la posici贸 de l'element dins l'array, i l'objecte array que es recorrer脿.

Si es proporciona el par脿metre thisArg al m猫tode some(), aquest es passar脿 a callback quan s'invoqui, i ser脿 el valor que mostrar脿 la variable this. En cas contrari, s'utilitzar脿 el valor undefined com a valor per a this. El valor de this observable en 煤ltima inst脿ncia per callback es determinar脿 d'acord a les regles per a determinar el valor de this observat per una funci贸.

some() no mutar脿 l'array quan sigui cridada.

El rang d'elements processat per some() 茅s determinat abans de la primera invocaci贸 de callback. Els elements que s'afegeixin a l'array despr茅s de la crida a some() no seran visitats per callback. Si el valor d'un element encara no visitat canvia, el valor que es passar脿 a callback ser脿 el valor que tingui aquest element a l'hora de visitar-lo; els elements que s'esborrin no es visitaran.

Exemples

Comprovar el valor dels elements d'un array

L'exemple seg眉ent comprova si el valor d'algun element de l'array es major que 10.

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

Comprovar els elements d'un array utilitzant funcions fletxa

Les funcions fletxa ofereixen una sintaxi redu茂da per a realitzar el mateix test.

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

Comprovar si existeix un valor en un array

L'exemple seg眉ent retorna cert si existeix un elmeent donat dins un array

var fruits = ['poma', 'platan', 'mango', 'guava'];

function checkAvailability(arr, val) {
    return arr.some(function(arrVal) {
        return val === arrVal;
    });
}

checkAvailability(fruits, 'kela'); //false
checkAvailability(fruits, 'platan'); //true

Comprovar si existeix un valor amb funcions fletxa

var fruits = ['poma', 'platan', 'mango', 'guava'];

function checkAvailability(arr, val) {
    return arr.some(arrVal => val === arrVal);
}

checkAvailability(fruits, 'kela'); //false
checkAvailability(fruits, 'platan'); //true

Polyfill

some() va ser afegida  al standard ECMA-262 en la cinquena edici贸; 茅s per aix貌 que pot no estar disponible en certes implementacions del standard. Es pot proporcionar la seva funcionalitat inserint l'script seg眉ent a l'inici dels vostres scripts, permetent l'煤s de some() en implementacions que no la suporten de forma nativa. Aquest algoritme 茅s exactament l'especificat a l'ECMA-262, cinquena edici贸, assumint que Object i TypeError tenen els valors originals i que fun.call es correspon amb el valor original de Function.prototype.call() (en-US).

// Production steps of ECMA-262, Edition 5, 15.4.4.17
// Reference: http://es5.github.io/#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;
  };
}

Especificacions

Especificaci贸 Estat Comentaris
ECMAScript 5.1 (ECMA-262)
The definition of 'Array.prototype.some' in that specification.
Standard Definici贸 inicial. Implementat a JavaScript 1.6.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Array.prototype.some' in that specification.
Standard
ECMAScript (ECMA-262)
The definition of 'Array.prototype.some' in that specification.
Living Standard

Compatibilitat amb navegadors

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)
Caracter铆stica Chrome Firefox (Gecko) Internet Explorer Opera Safari
Suport b脿sic (Yes) 1.5 (1.8) 9 (Yes) (Yes)
Caracter铆stica Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Suport b脿sic (Yes) (Yes) 1.0 (1.8) (Yes) (Yes) (Yes)

Vegeu tamb茅