función V8 nativa. Es rápido, siempre es correcto. Esto es parte de ES5.
Comprueba si el objeto se creó con el constructor de matriz.
Un método de subrayado. Aquí hay un fragmento tomado de su fuente.
var toString = Object.prototype.toString,
nativeIsArray = Array.isArray;
_.isArray = nativeIsArray || function(obj) {
return toString.call(obj) === '[object Array]';
};
Este método toma un objeto y llama al Object.prototype.toString
método sobre él. Esto siempre regresará [object Array]
para matrices.
En mi experiencia personal, encuentro que preguntar toString
cuál es el método es el más efectivo, pero no es tan corto o legible como instanceof Array
tampoco es tan rápido, Array.isArray
pero ese es el código ES5 y tiendo a evitar usarlo para la portabilidad.
Personalmente, le recomendaría que pruebe a usar underscore
, que es una biblioteca con métodos de utilidad comunes. Tiene muchas funciones útiles que SECAN su código.
util
biblioteca node.js -require('util').isArray(arr)
nodejs.org/api/util.html#util_util_isarray_objectarr instanceof Array
falla. Sin embargo,Array.isArray()
funciona muy bien.Prueba este código:
Array.isArray(argument)
fuente
Qué tal si:
your_object instanceof Array
En V8 en Chrome obtengo
[] instanceof Array > true ({}) instanceof Array > false ({"0":"string","1":"string","length":"2"}) instanceof Array > false
fuente
Parece que esta pregunta tiene varias buenas respuestas, pero para completar, agregaría otra opción, que no se ha sugerido anteriormente.
Para verificar si algo es una matriz, puede usar el
util
módulo nativo de Node.js y suisArray()
función.Ejemplo:
var util = require('util'); util.isArray([]); // true util.isArray(new Array); // true util.isArray({"0":"string","1":"string","length":"2"}); // false
Con ese método, no tiene que preocuparse por los estándares JS implementados por V8, ya que siempre mostrará la respuesta correcta.
fuente
util.isArray()
actualmente es proxy deArray.isArray()
: github.com/joyent/node/blob/…Pruebe de esta manera:
console.log (Object.prototype.toString.call (arg) .replace (/ ^ [object (. +)] $ /, '$ 1'). ToLowerCase ())
fuente