Comment dois-je détecter si l'argument est un tableau car typeof []
renvoie 'object'
et je veux faire la distinction entre les tableaux et les objets.
Il est possible que cet objet ressemble, {"0":"string","1":"string","length":"2"}
mais je ne veux pas qu'il apparaisse sous forme de tableau s'il s'agit en fait d'un objet ressemblant à un tableau.
JSON.parse
et JSON.stringify
sont capables de faire cette distinction. Comment puis-je le faire?
J'utilise Node.JS qui est basé sur V8 comme Chrome.
util
bibliothèque node.js -require('util').isArray(arr)
nodejs.org/api/util.html#util_util_isarray_objectarr instanceof Array
échouer. Cependant, celaArray.isArray()
fonctionne très bien.Essayez ce code:
Array.isArray(argument)
la source
Que diriez-vous:
your_object instanceof Array
Dans V8 dans Chrome, je reçois
[] instanceof Array > true ({}) instanceof Array > false ({"0":"string","1":"string","length":"2"}) instanceof Array > false
la source
Il me semble que cette question a plusieurs bonnes réponses, mais par souci d'exhaustivité, j'ajouterais une autre option, qui n'a pas été suggérée précédemment.
Afin de vérifier si quelque chose est un tableau, vous pouvez utiliser
util
le module natif Node.js et sonisArray()
fonction.Exemple:
var util = require('util'); util.isArray([]); // true util.isArray(new Array); // true util.isArray({"0":"string","1":"string","length":"2"}); // false
Avec cette méthode, vous n'avez pas à vous soucier des normes JS implémentées par V8 car elle affichera toujours la bonne réponse.
la source
util.isArray()
actuellement proxy versArray.isArray()
: github.com/joyent/node/blob/…Essayez de cette façon:
console.log (Object.prototype.toString.call (arg) .replace (/ ^ [object (. +)] $ /, '$ 1'). ToLowerCase ())
la source