- Dizi oluşturmak, indeksle elemana erişmek ve onu değiştirmek
push,pop,shift,unshiftile eleman eklemek ve silmek- Verileri
map,filter,findvereduceile işlemek
Bir sınıfta 25 öğrenci varsa notlarını saklamak için 25 ayrı değişken oluşturmak mantıklı değildir. Bunun için dizi (array) vardır: tek bir ad altında sıralı bir liste. Sosyal ağdaki gönderiler, sepetteki ürünler, çalma listesindeki şarkılar; programda bunların hepsi genellikle dizi olarak saklanır.
Dizi oluşturmak ve elemanlar
Dizi köşeli parantez içinde, elemanlar virgülle ayrılarak yazılır. String'lerde olduğu gibi indeksler 0'dan başlar, length ise eleman sayısını gösterir. Bir elemanı, indeksine yeni bir değer atayarak değiştirebilirsin.
const fruits = ['apple', 'pear', 'pomegranate'];
console.log(fruits[0]);
console.log(fruits.length);
console.log(fruits[fruits.length - 1]);
fruits[1] = 'quince';
console.log(fruits);▸ Beklenen çıktı
apple 3 pomegranate [ 'apple', 'quince', 'pomegranate' ]
Eleman eklemek ve silmek
| Metot | Ne yapar |
|---|---|
push(x) | sona eleman ekler |
pop() | son elemanı silip döndürür |
unshift(x) | başa eleman ekler |
shift() | ilk elemanı silip döndürür |
includes(x) | x dizide var mı — true/false |
indexOf(x) | x'in indeksi, yoksa −1 |
const queue = ['Aysel', 'Murad'];
queue.push('Leyla');
queue.unshift('Elvin');
console.log(queue);
const last = queue.pop();
const first = queue.shift();
console.log(first, last, queue);
console.log(queue.includes('Murad'), queue.indexOf('Aysel'));▸ Beklenen çıktı
[ 'Elvin', 'Aysel', 'Murad', 'Leyla' ] Elvin Leyla [ 'Aysel', 'Murad' ] true 0
forEach ve map
Dizi metotlarının çoğu argüman olarak bir fonksiyon alır ve onu her eleman için çağırır. forEach her elemanla yalnızca bir şey yapar, örneğin yazdırır. map ise her elemanı dönüştürür ve sonuçlardan aynı uzunlukta yeni bir dizi oluşturur. Orijinal dizi değişmez.
const prices = [10, 25, 4];
prices.forEach((price, index) => {
console.log(`${index}: ${price} AZN`);
});
const sale = prices.map((price) => price * 0.9);
const labels = prices.map((price) => `${price} AZN`);
console.log(sale);
console.log(labels);
console.log(prices);▸ Beklenen çıktı
0: 10 AZN 1: 25 AZN 2: 4 AZN [ 9, 22.5, 3.6 ] [ '10 AZN', '25 AZN', '4 AZN' ] [ 10, 25, 4 ]
filter, find ve reduce
filter, fonksiyonuntruedöndürdüğü elemanlardan yeni bir dizi oluşturur.findkoşula uyan ilk elemanı döndürür; yoksaundefineddöndürür.reducebütün diziyi tek bir değere indirger: toplam, en büyük değer, sayaç vb.
const scores = [45, 92, 78, 30, 88];
const passed = scores.filter((s) => s >= 50);
const firstHigh = scores.find((s) => s > 80);
const perfect = scores.find((s) => s === 100);
const total = scores.reduce((sum, s) => sum + s, 0);
console.log(passed);
console.log(firstHigh, perfect);
console.log('Total:', total, 'Average:', total / scores.length);▸ Beklenen çıktı
[ 92, 78, 88 ] 92 undefined Total: 333 Average: 66.6
reduce ilk bakışta zor görünür. Fonksiyonu iki değer alır: biriktirici (sum) ve o anki eleman (s). İkinci argüman olan 0, biriktiricinin başlangıç değeridir. Her adımda fonksiyonun döndürdüğü değer, bir sonraki adımın biriktiricisi olur:
| Adım | sum | s | Döndürülen |
|---|---|---|---|
| 1 | 0 | 45 | 45 |
| 2 | 45 | 92 | 137 |
| 3 | 137 | 78 | 215 |
| 4 | 215 | 30 | 245 |
| 5 | 245 | 88 | 333 |
Bu metotlar zincirlenebilir: her biri yeni bir dizi döndürdüğü için bir sonraki metot hemen onun üzerinde çağrılabilir. Aşağıda önce geçer notları seçiyor, sonra onlara 5 puan bonus ekliyoruz.
const scores = [45, 92, 78, 30, 88];
const bonus = scores
.filter((s) => s >= 50)
.map((s) => s + 5);
console.log(bonus);
console.log(scores.some((s) => s < 40));
console.log(scores.every((s) => s > 20));▸ Beklenen çıktı
[ 97, 83, 93 ] true true
some en az bir elemanın, every ise tüm elemanların koşula uyup uymadığını kontrol eder.Sıralama: sort
const numbers = [10, 9, 1, 100];
console.log([...numbers].sort());
console.log([...numbers].sort((a, b) => a - b));
console.log([...numbers].sort((a, b) => b - a));
const names = ['Murad', 'Aysel', 'Leyla'];
names.sort();
console.log(names);▸ Beklenen çıktı
[ 1, 10, 100, 9 ] [ 1, 9, 10, 100 ] [ 100, 10, 9, 1 ] [ 'Aysel', 'Leyla', 'Murad' ]
[...numbers] dizinin bir kopyasını çıkarır; böylece orijinal bozulmaz. Bu yazımı bir sonraki derste öğreneceksin.Diziden yalnızca çift sayıları seç, her birini 10 ile çarp ve yeni diziyi console.log ile yazdır. filter ve map metotlarını zincirle.
const numbers = [1, 2, 3, 4, 5, 6];
// your code here▸ Beklenen çıktı
[ 20, 40, 60 ]
Önemli noktalar
- Dizi sıralı bir listedir; indeksler 0'dan başlar,
lengtheleman sayısıdır. push/popsonda,unshift/shiftbaşta çalışır.mapher elemanı dönüştürür,filterseçer,findilk uyan elemanı bulur.reducebir biriktirici yardımıyla diziyi tek bir değere indirger.- Sayıları sıralamak için
sort((a, b) => a - b)yaz;sortorijinali değiştirir.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.
const a = [5, 10, 15]; ise a[1] neye eşittir?