Bu ders için video bulunmamaktadır.
Ders İçeriği
Giriş
Programlama yaparken, genellikle birden fazla değeri bir arada tutma ihtiyacı duyarız. Örneğin, bir alışveriş listesindeki ürünler, bir sınıftaki öğrencilerin isimleri veya bir blog yazısının etiketleri gibi. JavaScript'te bu tür ilişkili veri koleksiyonlarını saklamak için diziler (arrays) kullanılır.
Diziler, sıralı bir veri koleksiyonudur. İçinde farklı türlerde (sayılar, stringler, nesneler, hatta başka diziler) birçok öğeyi barındırabilirler. Diziler, verileri organize etmek, üzerinde döngü yapmak ve çeşitli işlemler gerçekleştirmek için çok güçlü ve esnek bir yapı sunar.
Bu derste, JavaScript'te dizilerin nasıl oluşturulduğunu, elemanlarına nasıl erişildiğini, dizilerin temel özelliklerini ve en önemlisi, diziler üzerinde işlem yapmamızı sağlayan güçlü dizi metodlarını (forEach, map, filter, reduce vb.) öğreneceğiz.
Dizi Oluşturma
JavaScript'te dizi oluşturmanın birkaç yolu vardır:
1. Dizi Literali (Array Literal)
En yaygın ve tercih edilen yöntem, köşeli parantezler []
kullanarak dizi oluşturmaktır. Elemanlar virgülle ayrılır.
2. Array Constructor
new Array()
yapıcısını kullanarak da dizi oluşturabilirsiniz. Ancak bu yöntem genellikle daha az tercih edilir ve bazı kafa karıştırıcı durumlara yol açabilir.
Uyarı: new Array()
yapıcısına tek bir sayı argümanı verdiğinizde, o sayıda eleman içeren bir dizi yerine, belirtilen uzunlukta boş bir dizi oluşturur. Bu beklenmedik davranışlara yol açabileceğinden, genellikle dizi literali []
kullanmak daha güvenlidir.
Dizi Elemanlarına Erişme ve Değiştirme
Dizi elemanlarına, dizinin adını ve ardından köşeli parantez içinde elemanın indeksini (sıra numarası) kullanarak erişilir. JavaScript'te dizi indeksleri 0'dan başlar.
Dizi Uzunluğu (length)
Bir dizinin length
özelliği, dizideki eleman sayısını verir. Bu özellik sadece okunabilir değil, aynı zamanda yazılabilirdir. length
değerini küçülterek dizinin sonundaki elemanları silebilir veya büyüterek diziye boş (undefined) elemanlar ekleyebilirsiniz.
Temel Dizi Metodları
JavaScript, diziler üzerinde işlem yapmak için birçok yerleşik metod sunar. Bu metodlar, dizilere eleman ekleme, çıkarma, dizileri birleştirme, sıralama ve daha birçok işlemi kolaylaştırır.
Eleman Ekleme/Çıkarma Metodları
push()
: Dizinin sonuna bir veya daha fazla eleman ekler ve dizinin yeni uzunluğunu döndürür.pop()
: Dizinin sonundaki elemanı çıkarır ve çıkarılan elemanı döndürür. Dizi boşsaundefined
döndürür.unshift()
: Dizinin başına bir veya daha fazla eleman ekler ve dizinin yeni uzunluğunu döndürür.shift()
: Dizinin başındaki elemanı çıkarır ve çıkarılan elemanı döndürür. Dizi boşsaundefined
döndürür.
Not: unshift
ve shift
metodları, dizinin başındaki elemanlarla işlem yaptığı için genellikle push
ve pop
'a göre daha yavaştır, çünkü dizideki diğer tüm elemanların indekslerinin kaydırılması gerekir.
Dizi Bölümlerini Alma ve Değiştirme
slice(baslangic?, bitis?)
: Dizinin belirtilen başlangıç indeksinden (dahil) bitiş indeksine (hariç) kadar olan bölümünü kopyalayarak yeni bir dizi döndürür. Orijinal diziyi değiştirmez. Argüman verilmezse tüm diziyi kopyalar. Negatif indeksler sondan saymayı ifade eder.splice(baslangic, silinecekSayi?, eklenecekOge1?, ...)
: Diziden elemanları çıkarır ve/veya yerine yenilerini ekler. Orijinal diziyi değiştirir! Çıkarılan elemanları içeren bir dizi döndürür.
Dizileri Birleştirme ve String'e Dönüştürme
concat(dizi1?, dizi2?, ...)
: Mevcut diziye bir veya daha fazla dizi veya değeri birleştirerek yeni bir dizi döndürür. Orijinal dizileri değiştirmez.join(ayirici?)
: Dizinin tüm elemanlarını birleştirerek bir string oluşturur. Elemanlar arasına isteğe bağlı olarak belirtilen ayırıcıyı koyar (varsayılan olarak virgüldür).
Döngüsel Dizi Metodları (Iteration Methods)
JavaScript, dizinin her bir elemanı üzerinde işlem yapmak için çok kullanışlı döngüsel metodlar sunar. Bu metodlar genellikle bir callback fonksiyonu alır ve dizinin her elemanı için bu fonksiyonu çalıştırır.
forEach(callback(eleman, indeks, dizi))
Dizinin her elemanı için belirtilen callback fonksiyonunu bir kez çalıştırır. Geriye bir değer döndürmez (undefined
döndürür). Genellikle dizinin her elemanıyla bir işlem yapmak (örneğin, ekrana yazdırmak) için kullanılır.
map(callback(eleman, indeks, dizi))
Dizinin her elemanı için belirtilen callback fonksiyonunu çalıştırır ve bu fonksiyonun döndürdüğü değerlerden oluşan yeni bir dizi oluşturur. Orijinal diziyi değiştirmez. Dizinin elemanlarını dönüştürmek için kullanılır.
filter(callback(eleman, indeks, dizi))
Dizinin her elemanı için belirtilen callback fonksiyonunu çalıştırır. Callback fonksiyonu true
döndüren elemanlardan oluşan yeni bir dizi oluşturur. Orijinal diziyi değiştirmez. Belirli bir koşulu sağlayan elemanları seçmek için kullanılır.
reduce(callback(birikim, eleman, indeks, dizi), baslangicDegeri?)
Dizinin elemanlarını soldan sağa doğru işleyerek tek bir değere indirger (reduce). Callback fonksiyonu dört argüman alır: birikim
(accumulator - önceki adımdan dönen değer veya başlangıç değeri), eleman
(current value), indeks
(current index) ve dizi
(array). İsteğe bağlı olarak bir baslangicDegeri
(initial value) alabilir.
İpucu: reduce
metodu oldukça çok yönlüdür. Sadece toplama veya çarpma değil, dizileri filtreleme, gruplama, düzleştirme gibi birçok farklı işlem için kullanılabilir.
Diğer Kullanışlı Dizi Metodları
find(callback(eleman, indeks, dizi))
: Callback fonksiyonunutrue
döndüren ilk elemanı bulur ve döndürür. Eleman bulunamazsaundefined
döndürür.findIndex(callback(eleman, indeks, dizi))
: Callback fonksiyonunutrue
döndüren ilk elemanın indeksini bulur ve döndürür. Eleman bulunamazsa-1
döndürür.includes(arananEleman, baslangicIndeksi?)
: Dizinin belirtilen elemanı içerip içermediğini kontrol eder.true
veyafalse
döndürür.some(callback(eleman, indeks, dizi))
: Dizideki en az bir eleman callback fonksiyonunutrue
yapıyorsatrue
döndürür, aksi takdirdefalse
.every(callback(eleman, indeks, dizi))
: Dizideki tüm elemanlar callback fonksiyonunutrue
yapıyorsatrue
döndürür, aksi takdirdefalse
.sort(karsilastirmaFonksiyonu?)
: Dizinin elemanlarını yerinde sıralar. Varsayılan olarak elemanları string'e çevirip Unicode değerlerine göre sıralar (bu sayılar için beklenmedik sonuçlar verebilir). Sayısal veya özel sıralama için bir karşılaştırma fonksiyonu gerekir.reverse()
: Dizinin elemanlarının sırasını yerinde tersine çevirir.flat(derinlik?)
: İç içe dizileri belirtilen derinliğe kadar düzleştirerek yeni bir dizi oluşturur. Varsayılan derinlik 1'dir.Array.isArray(deger)
: Verilen değerin bir dizi olup olmadığını kontrol eden statik bir metoddur.true
veyafalse
döndürür.
Alıştırmalar
- Verilen bir sayı dizisindeki tüm pozitif sayıların toplamını
filter
vereduce
kullanarak bulun. - Bir string dizisi içindeki tüm string'leri büyük harfe çevirip yeni bir dizi olarak döndüren bir kod yazın (
map
kullanın). - Bir öğrenci nesneleri dizisi (her nesne
{ad: '...', not: ...}
şeklinde) içinden notu 50'den yüksek olan öğrencilerin sadece adlarını içeren yeni bir dizi oluşturun (filter
vemap
kullanın). - Bir dizide belirli bir elemanın kaç kez geçtiğini bulan bir fonksiyon yazın (
reduce
kullanabilirsiniz). - Bir dizinin kopyasını oluşturan ve orijinal diziyi değiştirmeyen bir yol bulun (
slice
veya spread operatörü...
kullanabilirsiniz).
Bu derste JavaScript'teki dizileri ve güçlü dizi metodlarını öğrendik:
- Diziler: Sıralı veri koleksiyonlarıdır, farklı veri tiplerini içerebilirler. Dizi literali
[]
ile oluşturulurlar. - Eleman Erişimi: İndeks numarası (0'dan başlar) ile yapılır:
dizi[indeks]
. length
Özelliği: Dizinin eleman sayısını verir ve değiştirilebilir.- Temel Metodlar:
push
,pop
,shift
,unshift
(ekleme/çıkarma),slice
,splice
(bölüm alma/değiştirme),concat
,join
(birleştirme/string'e çevirme). - Döngüsel Metodlar:
forEach
: Her eleman için işlem yapar (değer döndürmez).map
: Her elemanı dönüştürerek yeni bir dizi oluşturur.filter
: Koşulu sağlayan elemanlardan yeni bir dizi oluşturur.reduce
: Diziyi tek bir değere indirger.
- Diğer Metodlar:
find
,findIndex
,includes
,some
,every
,sort
,reverse
,flat
,Array.isArray
.
Diziler ve dizi metodları, JavaScript'te veri işleme ve manipülasyonu için temel araçlardır. Bu metodları etkili bir şekilde kullanmak, daha temiz, okunabilir ve verimli kod yazmanızı sağlar.
Bir sonraki derste, JavaScript'in diğer önemli veri yapısı olan nesneleri (objects) ve özelliklerini inceleyeceğiz.