Il metodo fornito nello standard ECMAScript per trovare la classe di Object consiste nell'utilizzare il toString
metodo da Object.prototype
.
if( Object.prototype.toString.call( someVar ) === '[object Array]' ) {
alert( 'Array!' );
}
Oppure potresti usare typeof
per testare se è una stringa:
if( typeof someVar === 'string' ) {
someVar = [ someVar ];
}
Oppure, se non sei preoccupato per le prestazioni, puoi semplicemente eseguire concat
una nuova matrice vuota.
someVar = [].concat( someVar );
C'è anche il costruttore che puoi interrogare direttamente:
if (somevar.constructor.name == "Array") {
// do something
}
Dai un'occhiata a un trattamento completo dal blog di @TJ Crowder , come pubblicato nel suo commento qui sotto.
Dai un'occhiata a questo benchmark per avere un'idea del metodo che funziona meglio: http://jsben.ch/#/QgYAV
Da @Bharath converti la stringa in array usando Es6 per la domanda posta:
const convertStringToArray = (object) => {
return (typeof object === 'string') ? Array(object) : object
}
supponiamo:
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']