Possible Duplicate:
In javascript how can we identify whether an object is a Hash or an Array?
In javascript
typeof([])
and
typeof({})
both return "object".
How can I reliably distinguish between an array and an associative array in Javascript?
I have thought of testing the object in question to see if it has the "length" attribute (indicating it would be an array), but what then the following would also be seen as an array:
{length:5}
Modern browsers have Array.isArray
built in.
For older browsers, you can test for that function and add it when necessary.
if( typeof Array.isArray !== 'function' ) {
Array.isArray = function( arr ) {
return Object.prototype.toString.call( arr ) === '[object Array]';
};
}
alert( Array.isArray( [] ) );
EDIT:
Array.isArray
is part of ECMAScript 5:
15.4.3.2 Array.isArray ( arg )
The isArray function takes one argument arg, and returns the Boolean value true if the argument is an object whose class internal property is "Array"; otherwise it returns false. The following steps are taken:
- If Type(arg) is not Object, return false.
- If the value of the [[Class]] internal property of arg is "Array", then return true.
- Return false.
A good idea is, to check for the internal [[CClass]]
value. To do that, you need to invoke Object.prototype.toString
:
var toStr = Object.prototype.toString;
toStr.call([]); // === [object Array]
toStr.call({}); // === [object Object]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With