- Konu sahibi
- #1
JavaScript unshift nedir?
JavaScript’te
unshift(), bir dizinin başına bir veya daha fazla eleman ekleyen dizi metodudur. Dizinin kendisini değiştirir ve işlem tamamlandığında dizinin yeni eleman sayısını döndürür. Elemanların mevcut sıranın önüne eklenmesi gerektiğinde kullanılır.Temel kullanım
Sözdizimi şöyledir:
Kod:
const yeniUzunluk = dizi.unshift(eleman1, eleman2);
Örnek:
Kod:
const renkler = ["mavi", "yeşil"];
const sonuc = renkler.unshift("kırmızı");
console.log(renkler);
// ["kırmızı", "mavi", "yeşil"]
console.log(sonuc);
// 3
Burada
renkler dizisi doğrudan değişmiştir. sonuc ise eklenen elemanın kendisi değil, dizinin işlemden sonraki uzunluğudur.Birden fazla eleman ekleme
unshift() bir çağrıda birden fazla değer alabilir. Değerler, metoda yazıldıkları sırayla dizinin başına yerleşir:
Kod:
const sayilar = [3, 4];
sayilar.unshift(1, 2);
console.log(sayilar);
// [1, 2, 3, 4]
Bu davranış, elemanları tek tek
unshift() çağrılarıyla eklemekten farklı olabilir. Tek tek eklemede son eklenen değer en başa geçer:
Kod:
const ilkDizi = [3, 4];
ilkDizi.unshift(1, 2);
// [1, 2, 3, 4]
const ikinciDizi = [3, 4];
ikinciDizi.unshift(1);
ikinciDizi.unshift(2);
// [2, 1, 3, 4]
Bu nedenle birden fazla değerin sırasını korumak istiyorsanız değerleri aynı çağrıda verin veya ters sırayı bilinçli olarak kullanın.
Hangi metodu kullanmalıyım?
Karar verirken ekleme veya çıkarma yönüne bakın:
| İşlem | Metot | Sonuç |
|---|---|---|
| Başa ekleme | unshift() | Dizinin başına değer ekler |
| Sona ekleme | push() | Dizinin sonuna değer ekler |
| Baştan çıkarma | shift() | İlk değeri çıkarıp döndürür |
| Sondan çıkarma | pop() | Son değeri çıkarıp döndürür |
Dizinin başına yeni kayıt, bildirim veya öncelikli öğe koymanız gerekiyorsa
unshift() uygundur. Yalnızca yeni bir dizi oluşturmak ve mevcut diziyi değiştirmemek istiyorsanız yayma sözdizimini kullanabilirsiniz:
Kod:
const eskiListe = ["B", "C"];
const yeniListe = ["A", ...eskiListe];
console.log(eskiListe);
// ["B", "C"]
console.log(yeniListe);
// ["A", "B", "C"]
Uygulanabilir kullanım adımları
- Başına eklenecek dizinin gerçekten bir JavaScript dizisi olduğunu kontrol edin.
- Mevcut diziyi değiştirmek uygunsa
dizi.unshift(değer)çağrısını kullanın. - Birden fazla değerin sırasını korumak için bunları tek çağrıda ve istenen sırayla gönderin.
- Metodun döndürdüğü değeri öğe sanmayın; bu değer yeni dizi uzunluğudur.
- Mevcut dizinin korunması gerekiyorsa
[yeniDeğer, ...dizi]biçiminde yeni dizi oluşturun.
Başka bir diziyi eklerken iç içe yapıyı ayırın
liste.unshift([1, 2]) iki ayrı sayı eklemez; dizinin kendisini tek eleman olarak başa koyar. Sayıları ayrı elemanlar olarak eklemek için küçük bir girdi grubunda liste.unshift(...eklenecek) kullanılabilir. Ancak çok büyük bir diziyi fonksiyon argümanlarına yaymak ortamın argüman sınırına takılabilir. Böyle bir durumda veriyi parçalama veya farklı bir veri yapısı seçme kararını ölçülen ihtiyaca göre verin.Sık yapılan hatalar ve sınırlamalar
unshift() mevcut diziyi değiştirir. Aynı dizi başka bir değişkende de tutuluyorsa değişiklik oradan da görülebilir. Bu yan etki istenmiyorsa yayma sözdizimiyle yeni dış dizi oluşturun. Bu işlem derin kopya değildir; içteki nesnelerin referansları paylaşılır.Bir başka yaygın hata, dönüş değerini eklenen değer sanmaktır. Örneğin
const ilk = liste.unshift("yeni") ifadesinde ilk, "yeni" değil yeni uzunluktur. Eklenen değeri ayrıca saklamanız gerekir.Dizi boşsa işlem yine geçerlidir ve yeni eleman dizinin tek elemanı olur. Ancak dizi çok büyükse başa ekleme, mevcut elemanların konumlarının yeniden düzenlenmesini gerektirebilir. Çok sık baştan ekleme ve çıkarma yapılan yapılarda kullanım amacına uygun farklı bir veri yapısı değerlendirilmelidir.
Sık sorulan sorular
const ile tanımladığım dizide unshift neden çalışır?
Const, değişken bağının başka bir diziye yeniden atanmasını engeller; dizinin içeriğini dondurmaz. Bu nedenle const liste üzerinde unshift çalışabilir. Diziyi Object.freeze ile dondurduysanız eleman eklemek aynı şekilde mümkün değildir.
unshift() ile nesne eklenebilir mi?
Evet. Diziye dize veya sayı yanında nesne, başka bir dizi ya da fonksiyon gibi JavaScript değerleri de eklenebilir. Eklenen nesne, verilen nesneye yapılan başvurudur; otomatik olarak kopyalanmaz.