Disons que j'ai une fonction comme celle-ci :
function foo(bar) {
if (bar > 1) {
return [1,2,3];
} else {
return 1;
}
}
Et dites que j'appelle foo(1)
comment puis-je savoir si elle renvoie un tableau ou non ?
Disons que j'ai une fonction comme celle-ci :
function foo(bar) {
if (bar > 1) {
return [1,2,3];
} else {
return 1;
}
}
Et dites que j'appelle foo(1)
comment puis-je savoir si elle renvoie un tableau ou non ?
J'utilise cette fonction :
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
C'est la façon dont jQuery.isArray est mis en œuvre.
Consultez cet article :
if(foo(1) instanceof Array)
// You have an Array
else
// You don't
Mise à jour : Je dois répondre aux commentaires faits ci-dessous, car les gens continuent de prétendre que cela ne marchera pas sans l'essayer eux-mêmes...
Pour certains autres objets, cette technique ne fonctionne pas (par exemple, "" instanceof String == false), mais cela fonctionne pour Array. Je l'ai testé dans IE6, IE8, FF, Chrome et Safari. Essayez-le et voyez par vous-même avant de commenter ci-dessous.
Voici un moyen très fiable, tiré de Javascript : the good parts, publié par O'Reilly :
if (my_value && typeof my_value === 'object' && typeof my_value.length === 'number' &&
!(my_value.propertyIsEnumerable('length')) { // my_value is truly an array! }
Je vous suggère de l'intégrer dans votre propre fonction :
function isarray(my_value) {
if (my_value && typeof my_value === 'object' && typeof my_value.length === 'number' &&
!(my_value.propertyIsEnumerable('length'))
{ return true; }
else { return false; }
}
Pour rendre votre solution plus générale, vous pouvez ne pas vous soucier de savoir s'il s'agit réellement d'un objet Array. Par exemple, document.getElementsByName() renvoie un objet qui "agit comme" un tableau. La "conformité au tableau" peut être supposée si l'objet possède une propriété "length".
function is_array_compliant(obj){
return obj && typeof obj.length != 'undefined';
}
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.