Метод, указанный в стандарте ECMAScript для поиска класса Object, заключается в использовании метода toString
из Object.prototype
.
if( Object.prototype.toString.call( someVar ) === '[object Array]' ) {
alert( 'Array!' );
}
Или вы можете использовать typeof
, чтобы проверить, является ли онa String:
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']