Metodą podaną w standardzie ECMAScript w celu znalezienia klasy Object jest użycie toString
metody z Object.prototype
.
if( Object.prototype.toString.call( someVar ) === '[object Array]' ) {
alert( 'Array!' );
}
Możesz też użyć typeof
do sprawdzenia, czy jest to ciąg znaków:
if( typeof someVar === 'string' ) {
someVar = [ someVar ];
}
Lub jeśli nie martwisz się wydajnością, możesz po prostu zrobić concat
nową pustą macierz.
someVar = [].concat( someVar );
Istnieje również konstruktor, do którego możesz bezpośrednio zapytać:
if (somevar.constructor.name == "Array") {
// do something
}
Sprawdź na dokładną obróbkę z @TJ Crowder na blogu, jak pisał w swoim komentarzu poniżej.
Sprawdź ten test porównawczy, aby dowiedzieć się, która metoda działa lepiej: http://jsben.ch/#/QgYAV
Z @Bharath przekonwertuj ciąg znaków na tablicę za pomocą Es6 dla zadanego pytania:
const convertStringToArray = (object) => {
return (typeof object === 'string') ? Array(object) : object
}
przypuszczać:
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']