Dupliquer possible:
Comment détecter si une variable est un tableauJ'ai une question simple:
Comment détecter si un paramètre transmis à ma fonction javascript est un tableau? Je ne crois pas pouvoir tester:
if (typeof paramThatCouldBeArray == 'array')
Alors est-ce possible?
Comment pourrais-je le faire?
Merci d'avance.
Réponses
Trop de publicités?Quelques jours auparavant, j'ai été la construction d'une simple détection du type de fonction, c'est peut-être utile pour vous:
Utilisation:
//...
if (typeString(obj) == 'array') {
//..
}
Mise en œuvre:
function typeString(o) {
if (typeof o != 'object')
return typeof o;
if (o === null)
return "null";
//object, array, function, date, regexp, string, number, boolean, error
var internalClass = Object.prototype.toString.call(o)
.match(/\[object\s(\w+)\]/)[1];
return internalClass.toLowerCase();
}
La deuxième variante de cette fonction est plus stricte, car elle renvoie uniquement les types d'objet décrit dans la spécification ECMAScript (sortie possible des valeurs: "object"
, "undefined"
, "null"
, et "function"
, "array"
, "date"
, "regexp"
, "string"
, "number"
, "boolean"
"error"
, à l'aide de l' [[Class]]
propriété interne).
Vous pouvez tester la propriété constructor
:
if (param.constructor == Array) {
...
}
Bien que cela inclue les objets qui ont un prototype de tableau,
function Stack() {
}
Stack.prototype = [];
à moins qu'ils ne définissent également le constructeur:
Stack.prototype.constructor = Stack;
ou:
function Stack() {
this.constructor = Stack;
}