- Konu sahibi
- #1
JavaScript’te
Dizi, elemanların sırasını korur.
Bu örneğin beklenen çıktısı
En okunabilir oluşturma biçimi dizi sabitidir:
Başarılı sonuçta
İhtiyaca göre temel seçimler şöyledir:
Dizide belirli bir eleman olup olmadığını kontrol etmek için ilkel değerlerde
Bir verinin array olup olmadığını kontrol edip sonra dönüştürme yapmak güvenli bir temel yaklaşımdır:
Bu işlev geçerli girdide adları yeni bir array olarak döndürür. Geçersiz girdide hata vermesi, sessizce yanlış sonuç üretmek yerine çağıran kodun veri biçimini düzeltmesi gerektiğini gösterir.
Array sıralı ve sayısal indeksli eleman listeleri için kullanılır. Object ise genellikle adlandırılmış özellikleri bir arada tutar; örneğin tek bir kullanıcının
Diziler referans türüdür.
array, birden fazla değeri tek bir değişkende, sıralı ve indekslenebilir biçimde tutan veri yapısıdır. İlk elemanın indeksi 0 olur; elemanlara köşeli parantezle erişilir ve dizi gerektiğinde büyüyüp küçülebilir. Örneğin ["Ali", "Ayşe", "Mehmet"] bir isim dizisidir.JavaScript array nasıl çalışır?
Dizi, elemanların sırasını korur.
isimler[0] ilk elemana, isimler[1] ikinci elemana erişir. Sıradan, boşluksuz bir dizide eleman sayısı length ile okunur. Seyrek bir dizide boş yuvalar bulunabileceğinden length, gerçekten atanmış eleman sayısıyla her zaman aynı değildir. Diziler yalnızca metin tutmak zorunda değildir; sayı, boolean, nesne, başka dizi veya farklı türler aynı dizide bulunabilir. Ancak uygulama kodunu anlaşılır tutmak için çoğunlukla aynı türde veriler kullanılır.
Kod:
const urunler = [
{ ad: "Klavye", fiyat: 1200, stokta: true },
{ ad: "Fare", fiyat: 700, stokta: false },
{ ad: "Kulaklık", fiyat: 1800, stokta: true }
];
const stoktakiUrunler = urunler.filter(urun => urun.stokta);
const adlar = stoktakiUrunler.map(urun => urun.ad);
console.log(adlar);
Bu örneğin beklenen çıktısı
["Klavye", "Kulaklık"] değeridir. Çıktı boş dizi ise kod çalışmış olabilir; bu durumda stokta koşulunu sağlayan eleman yoktur. filter veya map tanınmıyorsa değer gerçek bir array olmayabilir ya da çalışma ortamında farklı bir değişken kullanılmış olabilir. filter yeni bir dizi üretir; başlangıçtaki urunler dizisini doğrudan değiştirmez.Array oluşturma ve temel işlemler
En okunabilir oluşturma biçimi dizi sabitidir:
Kod:
const sayilar = [10, 20, 30];
sayilar.push(40); // Sona ekler
const ilk = sayilar[0]; // 10
const son = sayilar.pop(); // Sondan çıkarır: 40
console.log(sayilar.length); // 3
console.log(ilk); // 10
console.log(son); // 40
Başarılı sonuçta
sayilar dizisi [10, 20, 30] olur. pop ve push dizinin kendisini değiştirir. Değiştirmeden yeni bir dizi oluşturmak için yayma sözdizimi kullanılabilir:
Kod:
const eskiListe = ["a", "b"];
const yeniListe = [...eskiListe, "c"];
İhtiyaca göre temel seçimler şöyledir:
| Amaç | Kullanım | Sonuç |
|---|---|---|
| Sona eleman eklemek | push(deger) | Mevcut diziyi değiştirir |
| Elemanları dönüştürmek | map(callback) | Yeni dizi üretir |
| Koşula uyanları seçmek | filter(callback) | Yeni, süzülmüş dizi üretir |
| Bir elemanı bulmak | find(callback) | İlk eşleşen elemanı veya undefined döndürür |
Dizide belirli bir eleman olup olmadığını kontrol etmek için ilkel değerlerde
includes kullanılabilir. Belirli bir koşulu test etmek için some veya tüm elemanları test etmek için every tercih edilir. Bir diziyi ekranda göstermek için çoğu zaman for...of döngüsü ya da forEach kullanılabilir.Sık yapılan hatalar ve doğru kararlar
- İndeksin
1değil0ile başladığını unutmayın.dizi[dizi.length]son elemanı değil, sınırın dışındaki değeri verir; son eleman içindizi[dizi.length - 1]veya uygun bir son-eleman yaklaşımı kullanılır. - Bir değişkenin gerçekten array olup olmadığını
typeofile kontrol etmeyin.typeof []sonucu genel olarak"object"olur; doğru kontrolArray.isArray(deger)şeklindedir. - Sayısal bir dizide
sort()çağrısının varsayılanını sayısal karşılaştırma sanmayın. Varsayılan sıralama değerleri metin gibi karşılaştırabildiği için sayısal sıralamadasayilar.sort((a, b) => a - b)kullanın.sortmevcut diziyi değiştirir. - Diziyi nesneyle karıştırmayın. Sıralı bir liste için array; anahtar-değer ilişkisi, örneğin kullanıcı kimliğine göre tek kayıt bulma, için object veya uygun başka bir veri yapısı daha anlaşılır olabilir.
Bir verinin array olup olmadığını kontrol edip sonra dönüştürme yapmak güvenli bir temel yaklaşımdır:
Kod:
function adlariGetir(veri) {
if (!Array.isArray(veri)) {
throw new TypeError("Beklenen veri bir array olmalı");
}
return veri
.filter(kayit => kayit && typeof kayit.ad === "string")
.map(kayit => kayit.ad);
}
console.log(adlariGetir([{ ad: "Deniz" }, { ad: "Ece" }]));
Bu işlev geçerli girdide adları yeni bir array olarak döndürür. Geçersiz girdide hata vermesi, sessizce yanlış sonuç üretmek yerine çağıran kodun veri biçimini düzeltmesi gerektiğini gösterir.
Sık sorulan sorular
Array ile object arasındaki temel fark nedir?
Array sıralı ve sayısal indeksli eleman listeleri için kullanılır. Object ise genellikle adlandırılmış özellikleri bir arada tutar; örneğin tek bir kullanıcının
ad ve email bilgileri object olabilir.Bir array kopyalandığında neden asıl dizi de etkilenebilir?
Diziler referans türüdür.
const kopya = asıl yazıldığında yeni dizi oluşmaz; iki değişken aynı diziyi gösterir. Bağımsız, yüzeysel bir kopya için [...asıl] kullanılabilir. İç içe object veya array elemanları varsa bu yöntem onların iç kopyasını oluşturmaz.