javascript - How can I check if an object is an array?

ID : 169

viewed : 166

Tags : javascriptarraysjavascript-objectsjavascript

Top 5 Answer for javascript - How can I check if an object is an array?

vote vote


The method given in the ECMAScript standard to find the class of Object is to use the toString method from Object.prototype.

if( === '[object Array]') {     alert('Array!'); } 

Or you could use typeof to test if it is a string:

if(typeof someVar === 'string') {     someVar = [someVar]; } 

Or if you're not concerned about performance, you could just do a concat to a new empty Array.

someVar = [].concat(someVar); 

There's also the constructor which you can query directly:

if ( == "Array") {     // do something } 

Check out a thorough treatment from T.J. Crowder's blog, as posted in his comment below.

Check out this benchmark to get an idea which method performs better:

From @Bharath, convert a string to an array using ES6 for the question asked:

const convertStringToArray = (object) => {    return (typeof object === 'string') ? Array(object) : object } 


let m = 'bla' let n = ['bla','Meow'] let y = convertStringToArray(m) let z = convertStringToArray(n) console.log('check y: '+JSON.stringify(y)) . // check y: ['bla'] console.log('check y: '+JSON.stringify(z)) . // check y: ['bla','Meow'] 
vote vote


In modern browsers you can do:


(Supported by Chrome 5, Firefox 4.0, Internet Explorer 9, Opera 10.5 and Safari 5)

For backward compatibility you can add the following:

// Only implement if no native implementation is available if (typeof Array.isArray === 'undefined') {   Array.isArray = function(obj) {     return === '[object Array]';   } }; 

If you use jQuery you can use jQuery.isArray(obj) or $.isArray(obj). If you use Underscore.js you can use _.isArray(obj).

If you don't need to detect arrays created in different frames you can also just use instanceof:

obj instanceof Array 
vote vote


I would first check if your implementation supports isArray:

if (Array.isArray)     return Array.isArray(v); 

You could also try using the instanceof operator

v instanceof Array 
vote vote


jQuery also offers an $.isArray() method:

var a = ["A", "AA", "AAA"];    if($.isArray(a)) {    alert("a is an array!");  } else {    alert("a is not an array!");  }
<script src=""></script>

vote vote


This is the fastest among all methods (all browsers supported):

function isArray(obj){     return !!obj && obj.constructor === Array; } 

Top 3 video Explaining javascript - How can I check if an object is an array?