Te pasó, no?, tenés que comprobar si el parámetro que recibiste en tu maravillosa funcion es un Array, o no. Primero probamos, tardamos menos que abrir google (o no ..):

var unArray = [];
if (typeof unArray === 'Array') //puede que tenga sentido, pero no

if (unArray.constructor === Array) //anda?, no parece piola 

 

Ahora si, abrimos google y nos tira mil opciones mas

if (unArray instanceof Array) //esta pinta bien

toString.call(unArray) === "[object Array]"; //bueh..

 

No estaría bueno poder hacer lo siguiente y fue?:

if (Array.isArray(unArray)) {
}
 

Está bueno y se puede, no entiendo porque tantas formas de comprobar lo mismo si ya podemos hacerlo tan simple.

Soporte: Chrome 5+, Firefox 4+, Safari 5+, Opera 10.5+, IE 9+

Si, ya se, me vas a decir que en IE 6, 7 y 8 no funca, bueno para todo browser que no se la banque, metemos el script:

if(!Array.isArray) {
  Array.isArray = function (vArg) {
    return Object.prototype.toString.call(vArg) === "[object Array]";
  };
}
 

o bien, algunas de todas las librerias que “levantan” el soporte del browser.

Como conclusión, dejemos de tirar condiciones extrañas de comprobacion de Arrays, ya tenemos a disposición un método que queda muy coqueto 😛

Mas documentación en MDN: isArray()