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.toStringmétodo sobre él. Esto siempre regresará [object Array]para matrices.
En mi experiencia personal, encuentro que preguntar toStringcuál es el método es el más efectivo, pero no es tan corto o legible como instanceof Arraytampoco es tan rápido, Array.isArraypero 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.
utilbiblioteca node.js -require('util').isArray(arr)nodejs.org/api/util.html#util_util_isarray_objectarr instanceof Arrayfalla. Sin embargo,Array.isArray()funciona muy bien.Prueba este código:
Array.isArray(argument)fuente
Qué tal si:
your_object instanceof ArrayEn V8 en Chrome obtengo
[] instanceof Array > true ({}) instanceof Array > false ({"0":"string","1":"string","length":"2"}) instanceof Array > falsefuente
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
utilmó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"}); // falseCon 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