2011-10-18 35 views
7

Cómo reconocer el objeto matriz & en js donde typeof no es útil?Diferencia entre matriz y objeto en js?

var arr = [], ob = {}; 

Como todo en js son objetos,

if(typeof arr == typeof ob) => returns true 

Quiero un operador o ... que me diga que la variable es una matriz. Entonces puedo usar solo las funciones de matriz en objetos que son array. ¿Cómo es eso posible?

Respuesta

11
var arr = [], ob = {}; 

Como todo en js son objetos, incluso ** matriz es un objeto, sino una instancia de la clase Array

if(typeof arr == typeof ob) => returns true as Both are **Objects 

Así que, ¿cómo va a identificar objetos.

Esto es donde el operador instanceof es muy útil, para identificar si su una matriz se puede poner un cheque cde adicional:

if(arr instanceof Object && arr instanceof Array) => returns true 
if(ob instanceof Object && ob instanceof Array) => returns false 
+1

Esto no funcionará en un entorno multi 'window', sin embargo. – alex

+0

+1: para mencionar: typeof vs. instanceof – vietean

+0

@alex Oh veo. ¿cuál será la salida para ello? –

5

Usted podría utilizar Array.isArray() método para comprobar si una variable es una matriz o de lo contrario.

var myArray = [1,2,3,4,5]; 
console.log(Array.isArray(myArray)); 

cierto

Cuestiones relacionadas