Es un Array o no?
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 😛