There are several ways of checking if an variable is an array or not. The best solution is the one you have chosen.
variable.constructor === Array
This is the fastest method on Chrome, and most likely all other browsers. All arrays are objects, so checking the constructor property is a fast process for JavaScript engines.
If you are having issues with finding out if an objects property is an array, you must first check if the property is there.
variable.prop && variable.prop.constructor === Array
Some other ways are:
variable instanceof Array
This method runs about a 1/3rd the speed as the first example. Still pretty solid, looks cleaner, if you're all about pretty code and not so much on performance. Update: instanceof
This now goes 2/3rd the speed! However, for those wanting it to be a one stop shop, it does not work with numbers.
Array.isArray(variable)
This last one is, in my opinion the ugliest, and it is one the slowest. Running about 1/5th the speed as the first example. Array.prototype, is actually an array. you can read more about it here https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
So yet another update
Object.prototype.toString.call(variable) === '[object Array]';
This guy is the slowest for trying to check for an Array. However, this is a one stop shop for any type you're looking for. However, since you're looking for an array, just use the fastest method above.
Also, I ran some test: http://jsperf.com/instanceof-array-vs-array-isarray/33 So have some fun and check it out.
Note: @EscapeNetscape has created another test as jsperf.com is down. http://jsben.ch/#/QgYAV I wanted to make sure the original link stay for whenever jsperf comes back online.
if ('push' in variable.__proto__)
, the quickest and maybe best way to check if some var is array. – thednp Jul 5 '15 at 22:02