3325 votes

Vérifier si l'objet est ensemble?

Je suis en train d'écrire une fonction qui accepte une liste de chaînes de caractères, ou une chaîne unique. Si c'est une chaîne, alors je veux le convertir en un tableau avec juste un élément. Ensuite, je peux passer en boucle sans crainte d'erreur.

Alors, comment puis-je vérifier si la variable est un tableau?

2058voto

user113716 Points 143363

La méthode indiquée dans le standard ECMAScript pour trouver la classe de l'Objet à l'aide de l' toString méthode de Object.prototype.

if( Object.prototype.toString.call( someVar ) === '[object Array]' ) {
    alert( 'Array!' );
}

Ou vous pouvez utiliser typeof pour tester si c'est une Chaîne de caractères:

if( typeof someVar === 'string' ) {
    someVar = [ someVar ];
}

Ou si vous n'êtes pas préoccupé par la performance, vous pourriez faire un concat d'un nouveau Tableau vide.

someVar = [].concat( someVar );

EDIT: découvrez un traitement complet de @T. J. Crowder du blog, comme publié dans son commentaire ci-dessous.

1573voto

Fela Winkelmolen Points 474

Dans les navigateurs modernes que vous pouvez faire

Array.isArray(obj)

(Pris en charge par Chrome 5, Firefox 4.0, IE 9, Opera 10.5 et Safari 5)

Pour la rétro-compatibilité, vous pouvez ajouter les éléments suivants

# only implement if no native implementation is available
if (typeof Array.isArray === 'undefined') {
  Array.isArray = function(obj) {
    return Object.toString.call(obj) === '[object Array]';
  }
};

Si vous utilisez jQuery, vous pouvez utiliser jQuery.isArray(obj) ou $.isArray(obj). Si vous utilisez le trait de soulignement vous pouvez utiliser _.isArray(obj)

Si vous n'avez pas besoin de détecter des tableaux créés dans des cadres différents, vous pouvez aussi simplement utiliser instanceof

obj instanceof Array

1322voto

ChaosPandion Points 37025

Je voudrais tout d'abord vérifier si votre application prend en charge isArray:

if (Array.isArray)
    return Array.isArray(v);

Vous pouvez également essayer d'utiliser l' instanceof de l'opérateur

v instanceof Array

306voto

janr Points 1441

jQuery propose également une isArray méthode:

var a = ["A", "AA", "AAA"];

if($.isArray(a)) {
    alert("a is an array!");
} else {
    alert("a is not an array!");
}

35voto

CruorVult Points 406

Tableau.isArray travaille vite, mais il n'est pas pris en charge par toutes les versions de navigateurs. Donc, vous pourriez faire une exception pour les autres et l'utilisation de méthode universelle:

    Utils = {};    
    Utils.isArray = ('isArray' in Array) ? 
        Array.isArray : 
        function (value) {
            return Object.prototype.toString.call(value) === '[object Array]';
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X