Метод, указанный в стандарте ECMAScript для поиска класса Object, заключается в использовании toString
метода из Object.prototype
.
if( Object.prototype.toString.call( someVar ) === '[object Array]' ) {
alert( 'Array!' );
}
Или вы можете использовать typeof
для проверки, если это строка:
if( typeof someVar === 'string' ) {
someVar = [ someVar ];
}
Или, если вы не беспокоитесь о производительности, вы можете просто создать concat
новый пустой массив.
someVar = [].concat( someVar );
Также есть конструктор, который вы можете запросить напрямую:
if (somevar.constructor.name == "Array") {
// do something
}
Заканчивать тщательное лечение от @TJ Crowder в блоге, как размещено в комментариях ниже.
Проверьте этот тест, чтобы понять, какой метод работает лучше: http://jsben.ch/#/QgYAV
Из @Bharath преобразуйте строку в массив, используя Es6 для поставленного вопроса:
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']