La méthode some() teste si au moins un élément du tableau passe le test implémenté par la fonction fournie.

Note : Cette méthode renverra false, quelle que soit la condition, si elle est utilisée sur un tableau vide.

Syntaxe

arr.some(callback[, objetThis])

Paramètres

callback
La fonction à tester pour chaque élément du tableau. Cette fonction utilise trois arguments :
valeurCourante
L'élément du tableau à traiter par la fonction.
index Facultatif
L'indice de l'élément qui est traité par la fonction.
array Facultatif
Le tableau sur lequel on a appelé la méthode some.
objetThis Facultatif
Paramètre optionnel. Il correspond à la valeur à utiliser pour this lors de l'exécution de la fonction callback.

Valeur de retour

true si la fonction callback renvoie une valeur équivalente à true pour au moins un des éléments du tableau, sinon elle renvoie false.

Description

La méthode some() exécute la fonction callback une seule fois pour chaque élément présent dans le tableau jusqu'à ce qu'elle en trouve un pour lequel callback renvoie une valeur équivalente à true dans un contexte booléen. Si un tel élément est trouvé, some() renvoie immédiatement true. Dans le cas contraire, some renvoie false. callback n'est invoquée que pour les indices du tableau auxquels des valeurs sont assignées ; elle n'est pas invoquée pour les indices qui ont été supprimés ou auxquels aucune valeur n'a jamais été assignée.

La fonction callback est invoquée avec trois paramètres : la valeur de l'élément, l'indice de l'élément et l'objet Array parcouru.

Si un paramètre objetThis est fourni à some(), il sera utilisé comme valeur de this pour chaque invocation du callback. Sinon, la valeur  undefined sera passée pour utilisation comme valeur this. La valeur this finalement utilisée par callback est déterminée en fonction des règles habituelles pour déterminer this pour une fonction.

La méthode some() ne modifie pas le tableau sur lequel elle est appelée.

La liste des éléments traités par some() est définie avant la première invocation du callback. Les éléments qui sont ajoutés au tableau après le début de l'appel à some ne seront pas visités par callback. Si un élément existant non encore visité est modifié par callback, sa valeur passée à callback sera sa valeur au moment où some visite l'indice de cet élément ; les éléments supprimés ne seront pas visités.

Exemples

Tester la valeur des éléments d'un tableau

L'exemple suivant teste si certains éléments d'un tableau sont plus grands que 10.

function estAssezGrand(element, indice, array) {
  return (element >= 10);
}
var resultat = [2, 5, 8, 1, 4].some(estAssezGrand);
// resultat vaut false
passed = [12, 5, 8, 1, 4].some(estAssezGrand);
// passed vaut true

Tester la valeur des éléments avec les fonctions fléchées

Les fonctions fléchées permettent d'utiliser une syntaxe plus concise pour réaliser la même opération que l'exemple précédent.

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

Note : Si on veut vérifier qu'un élément est dans un tableau, on pourra utiliser la méthode Array.prototype.includes().

Prothèse d'émulation (polyfill)

La méthode some() a été ajoutée avec la cinquième édition du standard ECMA-262 (ECMAScript 5) ; en tant que telle elle peut ne pas être présente dans d'autres implémentations de cette norme. Il est possible de contourner ceci en insérant le code qui suit au début de vos scripts, qui permet d'utiliser some() dans des implémentations d'ECMAScript qui ne la gèrent pas nativement. Cet algorithme est exactement le même que celui indiqué dans la 5e édition d'ECMAScript, avec l'hypothèse que Object and TypeError ont leurs valeurs originales et que fun.call est évalué comme la valeur originale de Function.prototype.call.

// 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;

    for (var i = 0; i < len; i++) {
      if (i in t && fun.call(thisArg, t[i], i, t)) {
        return true;
      }
    }

    return false;
  };
}

Spécifications

Spécification État Commentaires
ECMAScript 5.1 (ECMA-262)
La définition de 'Array.prototype.some' dans cette spécification.
Standard Définition initiale. Implémentée avec JavaScript 1.6.
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Array.prototype.some' dans cette spécification.
Standard  
ECMAScript Latest Draft (ECMA-262)
La définition de 'Array.prototype.some' dans cette spécification.
Projet  

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobileServeur
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidEdge MobileFirefox pour AndroidOpera pour AndroidSafari pour iOSSamsung InternetNode.js
Support simpleChrome Support complet OuiEdge Support complet OuiFirefox Support complet 1.5IE Support complet 9Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiEdge Mobile Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Ouinodejs Support complet Oui

Légende

Support complet  
Support complet

Voir aussi

Étiquettes et contributeurs liés au document

Contributeurs à cette page : SphinxKnight, BorisNaguet, benjaminW78, teoli, tregagnon, Jeremie, Mgjbot, BenoitL
Dernière mise à jour par : SphinxKnight,