JavaScript'te bir değişkenin bir dizi mi yoksa tek bir değer mi olduğunu kontrol etmek istiyorum.
Olası bir çözüm buldum...
if (variable.constructor == Array)...
Bu yapılabilecek en iyi yol mu?
Sen de kullanabilirsin:
if (value instanceof Array) {
alert('value is Array!');
} else {
alert('Not an array');
}
Bu bana oldukça zarif bir çözüm gibi görünüyor, ancak herkesin kendi çözümü.
Düzenle:
ES5'ten itibaren artık ayrıca:
Array.isArray(value);
Ancak polyfills kullanmadığınız sürece (temel olarak... IE8 veya benzeri) bu eski tarayıcılarda bozulacaktır.
Her birinin kendine özgü tuhaflıkları olan birden fazla çözüm vardır. Bu sayfa iyi bir genel bakış sunmaktadır. Olası bir çözüm şudur:
function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}
Crockford]1 aracılığıyla:
function typeOf(value) {
var s = typeof value;
if (s === 'object') {
if (value) {
if (value instanceof Array) {
s = 'array';
}
} else {
s = 'null';
}
}
return s;
}
Crockford'un bahsettiği ana başarısızlık, farklı bir bağlamda, örneğin window
da oluşturulan dizileri doğru bir şekilde belirleyememektir.
Bu sayfa yetersiz kalırsa çok daha gelişmiş bir versiyonu vardır.