JavaScript dizileri birden fazla değeri tek bir değişkende depolamak için kullanılır.
Dizi özel bir çeşit değişkendir, tek seferde birden fazla değeri barındırabilir.
Eğer bir listeniz varsa (örneğin araba isimleri listesi), her bir araba ismini değişkenlerde şöyle saklayabilirdiniz:
var araba1 = "araba1";
var araba2 = "araba2";
var araba3 = "araba3";
Ancak, araba isimleri içinden tek bir tanesini bulmanız gerektiğinde ne yapacaktınız? Ve 3 tane değil de 300 araba ismi olsaydı?
Çözümü bir dizi kullanmak!
Bir dizi tek bir isim altında birden fazla değeri saklayabilir, ve siz de index numarası yardımıyla istediğiniz değere ulaşabilirsiniz.
Bir JavaScript Dizisi oluşturmanın en kolay yolu köşeli parantezleri kullanmaktır.
Yazımı şu şekildedir:
var dizi_ismi = [oge1, oge2, ...];
Boşluklar ve satır araları önemli değildir. Dizi oluşturma birkaç satırda birden de yapılabilir:
Bu örnek bir dizi oluşturur ve içine değerler atar:
Dizi elemanlarına erişmek için dizideki index numaralarını kullanırız.
Bu örnek satır arabalar dizisinin ilk elemanına erişir:
var arabalar = ["araba1", "araba2", "araba3"];
document.getElementById("demo").innerHTML = arabalar[0];
Bu örnek ifade, arabalar dizisinin ilk elemanının değerini değiştirir:
var arabalar = ["araba1", "araba2", "araba3"];
arabalar[0] = "araba4";
document.getElementById("demo").innerHTML = arabalar[0];
JavaScript ile tüm diziye birden erişmek için sadece dizinin adını kullanmak yeterlidir:
var arabalar =["araba1", "araba2", "araba3"];
document.getElementById("demo").innerHTML = arabalar;
Diziler özel bir tür objedir. JavaScript typeof
özelliği diziler için kullanıldığında geriye "object" değerini döndürür.
Ama JavaScript dizileri en iyi dizi olarak ifade edilebilirler.
Diziler elemanlarına erişmek için numaraları kullanırlar. Bu örnekte insan[0], Ali değerini döndürür:
Objeler elemanlarına erişmek için isimleri kullanırlar. Bu örnekte, insan.ad geriye Ali değerini döndürür:
JavaScript değişkenleri obje olabilir. Diziler özel bir çeşit objedir.
Bu yüzden, farklı türdeki değişkenleri aynı dizi içerisinde kullanabilirsiniz.
Dizi içerisinde objeleriniz olabilir. Dizi içerisinde fonksiyonlarınız olabilir. Dizi içerisinde diziniz de olabilir:
yeniDizi[0] = Date.now;
yeniDizi[1] = yeniFonksiyon;
yeniDizi[2] = arabalar;
JavaScript dizileri kullanmanın en büyük avantajı hazır olan dizi özelliklerini ve metodlarını kullanabilmektir:
var x = arabalar.length; // length özelliği dizideki eleman sayısını döndürür
var y = arabalar.sort(); // sort() metodu diziyi sıralar
Dizi metodları diğer bölümlerde işlenmiştir.
length
özelliği dizinin uzunluğunu döndürür. (dizideki eleman sayısını).
var meyveler = ["Muz", "Portakal", "Elma", "Mango"];
meyveler.length; // meyveler dizisinin uzunluğu 4
meyveler = ["Muz", "Portakal", "Elma", "Mango"];
var son = meyveler[meyveler.length - 1];
Dizi içinde döngü kullanmanın en güvenli yolu for
döngüsü kullanmaktır:
var meyveler, yazi, meyvelerUzunluk, i;
meyveler = ["Muz", "Portakal", "Elma", "Mango"];
meyvelerUzunluk = meyveler.length;
yazi = "<ul>";
for (i = 0; i < meyvelerUzunluk; i++) {
yazi += "<li>" + meyveler[i] + "</li>";
}
yazi += "</ul>";
Ayrıca Array.forEach
döngüsü de kullanabilirsiniz:
var meyveler, yazi;
meyveler = ["Muz", "Portakal", "Elma", "Mango"];
yazi = "<ul>";
meyveler.forEach(fonksiyon);
yazi += "</ul>";
function fonksiyon(value) {
yazi += "<li>" + value + "</li>";
}
Diziye yeni bir eleman eklemenin en kolay yolu push
metodu kullanmaktır:
var meyveler = ["Muz", "Portakal", "Elma", "Mango"];
meyveler.push("Limon"); // meyveler dizisine yeni Limon elemanı ekler
Yeni eleman diziye length
özelliği kullanılarak da eklenebilir:
var meyveler = ["Muz", "Portakal", "Elma", "Mango"];
meyveler[meyveler.length] = "Limon"; // meyveler dizisine Limon elemanını ekler
var meyveler = ["Muz", "Portakal", "Elma", "Mango"];
meyveler[6] = "Limon"; // meyveler dizisine Limon elemanını ekler
Birçok programlama dili, isimlendirilmiş indexli dizileri destekler.
İsimlendirilmiş indexli dizilere ilişkisel diziler denir.
JavaScript ilişkisel dizileri desteklemez.
JavaScript'te diziler yalnızca numaralı index kullanır.
var insan = [];
insan[0] = "Ali";
insan[1] = "Pak";
insan[2] = 46;
var x = insan.length; // insan.length 3 değerini döndürür
var y = insan[0]; // insan[0] "Ali" değerini döndürür
var insan = [];
insan["ad"] = "Ali";
insan["soyad"] = "Pak";
insan["yas"] = 46;
var x = insan.length; // insan.length 0 döndürür
var y = insan[0]; // insan[0] undefined yani tanımlanamayan değer döndürür
JavaScript'te, diziler numaralı index kullanır.
JavaScript'te, objeler isimlendirilmiş index kullanır.
JavaScript'teki new Array()
komutunu kullanmaya gerek yok.
Bunun yerine [] köşeli parantezleri kullanmalısınız.
Bu örnekteki iki satır da iki yeni dizi oluşturmaktadır:
Bu örnekteki iki satır da içerisinde 6 adet sayı bulunan yeni dizi oluşturmaktadır:
var noktalar = new Array(40, 100, 1, 5, 25, 10); // Kötü kullanım
var noktalar = [40, 100, 1, 5, 25, 10]; // İyi kullanım
new
kelimesi sadece kodu karmaşıklaştırmaktadır. Ve bazen öngörülemeyen sonuçlarla karşılaşmanızı sağlar:
Peki ya tek eleman eklemek isteseydik?
var noktalar = new Array(40); // 40 adet tanımlanmamış elemanlı bir dizi oluşturur!
Genelde sorulan bir soru şudur: Bir değişkenin dizi olup olmadığını nasıl anlarız?
Örnekte görüldüğü gibi, JavaScript'teki typeof geriye "object" değeri döndürüyor, "array" değil:
Obje döndürüyor, çünkü diziler aslında birer objedir.
Bu sorunu çözmek için Array.isArray()
metodunu kullanabiliriz:
Bu çözümdeki sorun Array.isArray()
metodu eski tarayıcılarda çalışmamaktadır.
Bu problemi çözmek için kendi diziMi()
fonksiyonunuzu oluşturabilirsiniz:
Bu fonksiyon, eğer değişken bir diziyse her zaman "true" döndürür.
Daha doğrusu: eğer değişken prototipi Array kelimesini barındırıyorsa "true" döndürür.
instanceOf
operatörü, eğer dizi köşeli parantezler kullanılarak oluşturulduysa, "true" değeri döndürür: