The method given in the ECMAScript standard to find the class of Object is to use the toString
method from Object.prototype
.
if( Object.prototype.toString.call( someVar ) === '[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 (somevar.constructor.name == "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: http://jsben.ch/#/QgYAV
From @Bharath convert string to array using Es6 for the question asked:
const convertStringToArray = (object) => {
return (typeof object === 'string') ? Array(object) : object
}
suppose:
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']
arr.constructor === Array
is fastest. – Netaarr.constructor === Array
test will return false.Array.isArray(arr)
still returns true though. – ghaschel