Como devo detectar se o argumento é uma matriz porque typeof []
retorna 'object'
e quero distinguir entre matrizes e objetos.
É possível que o objeto se pareça, {"0":"string","1":"string","length":"2"}
mas não quero que saia como um array se for de fato um objeto parecido com um array.
JSON.parse
e JSON.stringify
são capazes de fazer essa distinção. Como eu posso fazer isso?
Estou usando o Node.JS, que é baseado no V8 da mesma forma que no Chrome.
util
biblioteca node.js -require('util').isArray(arr)
nodejs.org/api/util.html#util_util_isarray_objectarr instanceof Array
falha. No entanto,Array.isArray()
funciona muito bem.Experimente este código:
fonte
E se:
No V8 no Chrome eu recebo
fonte
Parece que esta pergunta tem várias respostas boas, mas para completar, eu adicionaria outra opção, que não foi sugerida anteriormente.
Para verificar se algo é um array, você pode usar o
util
módulo nativo Node.js e seuisArray()
função.Exemplo:
Com esse método, você não precisa se preocupar com os padrões JS implementados pelo V8, pois ele sempre mostrará a resposta certa.
fonte
util.isArray()
atualmente atua como proxy paraArray.isArray()
: github.com/joyent/node/blob/…Tente desta forma:
console.log (Object.prototype.toString.call (arg) .replace (/ ^ [object (. +)] $ /, '$ 1'). ToLowerCase ())
fonte