Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

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:

İşlemMetotSonuç
Başa eklemeunshift()Dizinin başına değer ekler
Sona eklemepush()Dizinin sonuna değer ekler
Baştan çıkarmashift()İlk değeri çıkarıp döndürür
Sondan çıkarmapop()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ı​


  1. Başına eklenecek dizinin gerçekten bir JavaScript dizisi olduğunu kontrol edin.
  2. Mevcut diziyi değiştirmek uygunsa dizi.unshift(değer) çağrısını kullanın.
  3. Birden fazla değerin sırasını korumak için bunları tek çağrıda ve istenen sırayla gönderin.
  4. Metodun döndürdüğü değeri öğe sanmayın; bu değer yeni dizi uzunluğudur.
  5. 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.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic