- Konu sahibi
- #1
JavaScript push nedir?
JavaScript'te
push(), bir dizinin sonuna bir veya daha fazla eleman ekleyen ve işlemden sonra dizinin yeni uzunluğunu döndüren dizi metodudur. Mevcut diziyi doğrudan değiştirir; yeni bir dizi oluşturmaz. Örneğin const sayilar = [1, 2]; sayilar.push(3); çalıştırıldığında dizi [1, 2, 3] olur ve dönüş değeri 3'tür.Nasıl çalışır?
push(...elemanlar) çağrısında verilen her değer, dizinin mevcut sonuna sırayla eklenir. Hiçbir argüman verilmezse dizi değişmez ve mevcut uzunluğu döndürülür. Birden fazla değer tek çağrıda eklenebilir. Eleman olarak dizi verirseniz içindeki değerler ayrı ayrı eklenmez; dizi, tek bir eleman olarak eklenir.
Kod:
const gorevler = ["listele"];
const yeniUzunluk = gorevler.push("ekle", "sil");
console.log(gorevler); // ["listele", "ekle", "sil"]
console.log(yeniUzunluk); // 3
Buradaki
yeniUzunluk yeni dizinin uzunluğudur. push()'un kendisi eklenen elemanı veya güncellenmiş diziyi döndürmez. Bu nedenle sonucu yeni bir değişkene atarken neyi kullanmak istediğinizi kontrol edin.Çalıştırılabilir en küçük örnek
Aşağıdaki kodu tarayıcının geliştirici konsoluna veya Node.js dosyasına olduğu gibi yerleştirebilirsiniz:
const meyveler = ["elma"];ile başlangıç dizisini oluşturun.const uzunluk = meyveler.push("armut");ile sonuna yeni eleman ekleyin.console.log(meyveler, uzunluk);ile diziyi ve dönüş değerini kontrol edin.
Beklenen çıktı
["elma", "armut"] 2 biçimindedir. Diziye yeni değer eklenmiş fakat ekranda yalnızca 2 görüyorsanız bu hata değildir; push() dönüş değeri uzunluktur. Dizinin kendisini görmek için meyveler değişkenini yazdırın.push, concat ve spread farkı
Diziyi değiştirip değiştirmeme kararı, hangi yöntemi kullanmanız gerektiğini belirler:
| Yöntem | Mevcut diziyi değiştirir mi? | Sonuç |
|---|---|---|
push(x) | Evet | Yeni uzunluğu döndürür |
concat(x) | Hayır | Yeni dizi döndürür |
[...dizi, x] | Hayır | Yeni dizi oluşturur |
Not: concat'a dizi argümanı verildiğinde elemanları bir düzey birleştirebilir; push'a verilen dizi ise tek elemandır. Yalnız dönüş tipine bakarak ikisinin her girdide eşdeğer olduğunu varsaymayın.
React gibi durumun doğrudan değiştirilmemesinin önemli olduğu yapılarda çoğunlukla
push() yerine yeni dizi oluşturmak gerekir:
Kod:
const eskiListe = ["A", "B"];
const yeniListe = [...eskiListe, "C"];
console.log(eskiListe); // ["A", "B"]
console.log(yeniListe); // ["A", "B", "C"]
Buna karşılık yerel bir diziyi adım adım dolduruyor veya bir döngüde sonuç biriktiriyorsanız
push() pratik ve doğrudan tercihtir.Sık yapılan hatalar
- Dönüş değerini dizi sanmak:
const sonuc = dizi.push("x");sonrasındasonuceklenen dizi değil, sayısal uzunluktur. - İç içe dizi beklememek:
liste.push([1, 2]);ifadesi iki eleman değil, tek bir dizi elemanı ekler. Elemanları ayrı eklemek içinliste.push(1, 2)veyaliste.push(...[1, 2])kullanılır. - Sabit değişken ile yöntemi karıştırmak:
constile tanımlanan bir dizinin içeriğipush()ile değiştirilebilir; ancak değişkeni başka bir diziye yeniden atayamazsınız. - Dizi olmayan değerde kullanmak: Dizi prototipindeki push, uygun length ve sayısal özellikleri olan array-like nesnelere call ile de uygulanabilen generic bir metottur. Ancak sıradan nesnenin kendiliğinden push metodu yoktur.
undefined.push("x")gibi bir çağrı çalışma zamanı hatası üretir; önce değerin gerçekten dizi olduğundan emin olun.
Sık sorulan sorular
push() ile unshift() arasındaki fark nedir?
push() elemanı dizinin sonuna, unshift() ise başına ekler. Sıra önemliyse hangi uçtan ekleme yapmak istediğinize göre seçim yapın.Bir dizinin son elemanını push() ile silebilir miyim?
Hayır.push() ekleme içindir. Son elemanı çıkarmak için pop(), ilk elemanı çıkarmak için shift() kullanılır.