Chcel by som skontrolovať, či je premenná v jazyku JavaScript pole alebo jedna hodnota.
Našiel som možné riešenie...
if (variable.constructor == Array)...
Je to najlepší spôsob, ako to možno urobiť?
Môžete tiež použiť:
if (value instanceof Array) {
alert('value is Array!');
} else {
alert('Not an array');
}
Zdá sa mi to ako celkom elegantné riešenie, ale každému podľa jeho uváženia.
Upraviť:
Od ES5 už existuje aj:
Array.isArray(value);
Ale to sa pokazí v starších prehliadačoch, pokiaľ nepoužívate polyfills (v podstate... IE8 alebo podobné).
Existuje viacero riešení, ktoré majú svoje vlastné špecifiká. Táto stránka poskytuje dobrý prehľad. Jedno z možných riešení je:
function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}
Prostredníctvom Crockford:
function typeOf(value) {
var s = typeof value;
if (s === 'object') {
if (value) {
if (value instanceof Array) {
s = 'array';
}
} else {
s = 'null';
}
}
return s;
}
Hlavným nedostatkom, ktorý Crockford uvádza, je neschopnosť správne určiť polia, ktoré boli vytvorené v inom kontexte, napr. okno
.
Táto stránka obsahuje oveľa prepracovanejšiu verziu, ak je táto nedostatočná.