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ıralarDizi 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 4meyveler = ["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ı eklerYeni eleman diziye length özelliği kullanılarak da eklenebilir:
var meyveler = ["Muz", "Portakal", "Elma", "Mango"];
meyveler[meyveler.length] = "Limon"; // meyveler dizisine Limon elemanını eklervar meyveler = ["Muz", "Portakal", "Elma", "Mango"];
meyveler[6] = "Limon"; // meyveler dizisine Limon elemanını eklerBirç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ürvar 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ürJavaScript'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ımnew 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: