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