JavaScript Temelleri

Bölüm 8

Array (Dizi) Nesne Sınıfı

Bölüm 8 Sayfa 4

8.2.12 - splice() Metodu

splice() Metodu, bir dizinin belirli bir elemanını takip eden n tane elemanı siler, silinen elemanları döndürür ve istendiğinde, silinen elemanlarının tümünün veya sadece bir kısmının yerine yenilerini yerleştirir.

splice() Metodunun sözdizimi,

dizi.splice(başlangıç , n , [girdi1[ , girdi2 , [ ,...[ , girdiN]]]]);

şeklindedir. Burada,

dizi : Bir dizi (Gerekli)

başlangıç : Kesilmenin kendisi ile başlanacağı elemanın indis numarası (sıfırdan başlanarak) (Gerekli)

n : Kesilecek eleman sayısı(Gerekli)

girdi1...girdi2 : Kesilen elemanların yerine konulacak elemanlar (İsteğe Bağlı).

olarak tanımlanmıştır.

Burada eğer,

a=bir dizi nesnesi,

x=kesilmenin başlayacağı elemanların indisi,

n=kesilecek elemanların sayısı, eğer bu değer 0 olursa, diziden eleman çıkartılmaz, diziye eleman eklenir.

ise, a[x]..a[x + n - 1] arası tüm elemanlar kesilir. Örnek olarak, a.splice(1,4);

a[x] = a[1], a[x + n - 1] = a[1 + 4 - 1] = a[4] olduğuna göre,

a[1](dahil)..a[4] (dahil) arası tüm elemanlar (a[1], a[2], a[3], a[4]) kesilir. Geriye kalan,

a[0], a[5],...elemanları yeni diziyi oluşturur.

Herşeyden önce, slice() ve splice() metotları arasındaki farkları iyi anlamalıyız. slice() Metodunun uygulanması, orijinal dizinin içeriğini etkilemezken,bir diziye splice() metodunun uygulanması, dizinin bazı elemanlarının diziden çıkarılması ile sonuçlanır. Yani, slice() metodu, dizinin kopyalanmasını, splice() metodu ise, dizinin kesilmesini hedefler. Bir diziye splice() metodunun uygulanması sırasında, kesilecek elemanların bir başka diziye ataması yapılmamışsa, kesilen elemanlara bir daha ulaşılamaz.

Bir diziye slice() metodu, rekürsif tahrip edici atama olarak uygulanırsa, yani kopyalanacak elemanlar, orijinal diziye atanırsa, her tahriip edici atama gibi, bu durumda da dizinin orijinal içeriği kaybolur ve yerine, kopyalanmış elemanlar geçer. Aynı sav, splice() metodu için de geçerlidir.

slice() Metodu, bir dizinin belirli bir aralığının içindeki elemanları hedeflerken splice () metodu, bir dizinin belirli bir aralığındaki elemanların dışındakileri hedefler.

slice() Metodu kopyalanan elemanların yerlerine yenilerinin konulması için bir mekanizma içermez, fakat splice () metodu, atılan elemanların yerine, gereğinde yenilerinin konulabilmesi için bir seçenek de içerir. Bu nedenle, splice () metodunun kullanımı, slice() metoduna göre daha detaylıdır.

splice() Metodunun üç türlü uygulama olanağı bulunmaktadır:

Yukarıda belirtilen uygulama yöntemleri ayrı, ayrı incelenecektir.

splice() Metodunun Salt Diziden Eleman Çıkartmak Amacı ile Uygulanması

Salt diziden eleman çıkarmak amacı ile kullanılması, dizinin belirli bir kısmındaki elemanların diziden çıkartılması ile sonuçlanır.

Örnek:

/* <![CDATA[ */

// Bu Program bdelib.js Kitaplık Programından Yararlanmaktadır.

function grupSil() {

var t =  new Array('Menekşe', 'Papatya', 'Kardelen', 'Nergis', 'Marguerite', 'Muguet', 'Gardenia');

diziYaz(t, ' / ', 'b8.2.12-uyg-1-sonuç-1');

t.splice(1, 2);

diziYaz(t, ' / ', 'b8.2.12-uyg-1-sonuç-2');

}

sayfaYüklendiktenSonraÇalıştır(grupSil);

/* ]]> */
		

Program Sonucu :

Orijinal t Dizisi :

t.splice(1, 2);

Geri kalan t Dizisi :

t Dizisinin 2 inci ve 3 üncü Elemanları Kesiliyor!

Kodların Açıklaması:

Yukarıdaki programda, orijinal t dizisi,

t[0] = 'Menekşe', t[1] = 'Papatya', t[2] = 'Kardelen', t[3] = 'Nergis' , t[4] = 'Marguerite', t[5] = 'Muguet', t[6] = 'Gardenia' şeklindedir.

t.splice(1,2);

komutu, orijinal t dizisinin indisi [1] olan elemanı üzerine konumlanılması, bu eleman ve kendisinden sonra gelen eleman olarak iki elemanın diziden çıkarılması, dizinin yeniden yapılandırılması anlamına gelmektedir. Bu durumda, orijinal t dizisinden,

t[1] = 'Papatya' ve t[2] = 'Kardelen'

elemanları çıkartılmış, geriye kalan elemanlarla, yeni t dizisi,

t[0] = 'Menekşe', t[1] = 'Nergis', t[2] = 'Marguerite', t[3] = 'Muguet' , t[4] = 'Gardenia'

şeklinde yenidien yapılandırılmış ve yeni içeriği yazdırılmıştır.

splice() Metodunun Geri Döndürme Özelliğinden Yararlanılması Amacı ile Uygulanması

splice() Metodu uygulandığında, diziden belirli elemanları çıkarır ve bu elemanları geri döndürülebilecek şekilde bellekte tutar. Salt diziden eleman çıkarma amacı ie uygulandiğında geri döndürülen değere gereksinim duyulmaz. Fakat, istendiğinde, bu geri döndürme değerinden iki türlü yararlanılabilir:

Geri döndürülen değerle yeni bir dizi oluşturulması

Bu tür bir uygulama orijinal diziyi ilk örnekte olduğu gibi splice () metodunun uygulandığı olağan şekilde etkiler. Uygulama orijinal dizi için aynen ilk örnekte olduğu gibi bir kesilme ile sonuçlanır. Kesilen elemanlar ise yeni bir diziye yerleştirilir. Örnek:

/* <![CDATA[ */

// Bu Program bdelib.js Kitaplık Programından Yararlanmaktadır.

function kesOluştur() {

var t =  new Array('Menekşe', 'Papatya', 'Kardelen', 'Nergis', 'Marguerite', 'Muguet', 'Gardenia'), p = new Array();

diziYaz(t, ' # ','b8.2.12-uyg-2-sonuç-1');

p = t.splice(1, 2);

diziYaz(p, ' # ', 'b8.2.12-uyg-2-sonuç-2');

diziYaz(t, ' # ', 'b8.2.12-uyg-2-sonuç-3');

}

sayfaYüklendiktenSonraÇalıştır(kesOluştur);

/* ]]> */
		

Program Sonucu :

Orijinal t Dizisi :

p=t.splice(1,2);

Oluşan p Dizisi :

Geri Kalan t Dizisi :

t Dizisinin 2 inci ve 3 üncü Elemanları Kesilerek Yeni Bir P Dizisi Oluşturuluyor !
Geri Kalan t Dizisinde, p Dizisi İçindekiler Dışında, Tüm Orjinal t Dizisi Elemanları Bulunuyor !

Geri döndürülen değerin orijinal diziye uygulanması

Bu uygulama şekli, ilginç bir şekilde, önce orijinal dizinin belirtilen elemanlarının kesilmesi ile başlar. Geri döndürülen değerler, yeniden orijinal diziye atandığında, bir tahrip edici atama gerçekleşir. Bu tahrip edici atama sonunda, orjinal dizinin orijinal içeriği silinir ve geri döndürülen kesilen elemanlar ile yeni bir içerik oluşturulur. Bu durumda, orijinal dizinin başlangıç ve son elemanlarının bazıları kesilerek, orijinal dizi için yeni bir içerik oluşturulmuş olur. Örnek:

/* <![CDATA[ */

// Bu Program bdelib.js Kitaplık Programından Yararlanmaktadır.

function kesYerleştir() {

var t =  new Array('Menekşe', 'Papatya', 'Kardelen', 'Nergis', 'Marguerite', 'Muguet', 'Gardenia');

diziYaz(t, ' * ' , 'b8.2.12-uyg-3-sonuç-1');

t = t.splice(1, 2);

diziYaz(t, ' * ' , 'b8.2.12-uyg-3-sonuç-2');

}

sayfaYüklendiktenSonraÇalıştır(kesYerleştir);


/* ]]> */
		

Bu programın uygulanması sonucu:

Orijinal t Dizisi :

t = t.splice(1, 2);

Oluşan t Dizisi :

Orijinal t Dizisinin Kesilen Elemanları Yeniden t dizisine Atanıyor.
Orijinal t dizisinin İçeriği Kayboluyor, Yerine Kesilen Elemanlar Yerleştiriliyor !

splice ()Metodunun bu şekilde rekürsif tahrip edici atama ile uygulanmasıın, slice() metodunun aynı şekilde rekürsif tahrip edici atama ile uygulanmasına eşdeğer olduğu aşağıdaki örnekten izlenebilir:

/* <![CDATA[ */

// Bu Program bdelib.js Kitaplık Programından Yararlanmaktadır.

function diziYenile() {

var t =  new Array('Menekşe', 'Papatya', 'Kardelen', 'Nergis', 'Marguerite', 'Muguet', 'Gardenia');

diziYaz(t , ' # ' ,'b8.2.12-uyg-4-sonuç-1');

t = t.slice(1, 3);

diziYaz(t , ' * ' ,'b8.2.12-uyg-4-sonuç-2');


}

sayfaYüklendiktenSonraÇalıştır(diziYenile);


/* ]]> */
		

Bu programın uygulanması ile :

Orijinal t Dizisi : =

t=t.slice(1,3);

Sonuç t Dizisi : =

slice() Yöntemi, splice() Yöntemine Eşdeğer İşlev Yapabiliyor !

splice() Metodunun Dizideki Elemanların Bazılarının Yerlerine Yenilerini Yerleştirmek Amacı ile Uygulanması

splice() Metodunun, bu üçüncü ve son kullanım şeklinde, bir diziden kesilen elemanların yerlerine yenileri yerleştirilebilir. Bu tür bir uygulamada, kesilen elemanlar ve yerlerine yerleştirilen yenileri bitişik olmalı, yani birbirlerini takip etmelidirler. Kesilen elemanlar, yerlerine yerleştirilecek elemanlardan fazla ise, kesilen ilk elemanların yerlerine yenileri yerleştirilir. Örnek :

/* <![CDATA[ */

// Bu Program bdelib.js Kitaplık Programından Yararlanmaktadır.

function kesYenisiniYerleştir() {

var a=new Array('İsim', 'Soyad', 'Üye No.', 'T.C. Kimlik No.' , 'Vergi No.', 'Adres');

diziYaz(a, ' | ' ,  'b8.2.12-uyg-5-sonuç-1');

a.splice(4, 1, ['Tel No.']);

diziYaz(a, ' | ' , 'b8.2.12-uyg-5-sonuç-2';)
}


sayfaYüklendiktenSonraÇalıştır(kesYenisiniYerleştir);

/* ]]> */
		

Bu programın sonucu :

Orijinal a Dizisi : =

a.splice(4,1,['Tel No.']);

Sonuç a Dizisi : =

şeklindedir. Dizinin beşinci elemanın değeri, 'Vergi No.' dan, 'Tel. No.' 'ya değiştirilmiştir.

8.2.13 - unshift() Metodu

unshift() Metodu, bir dizinin başına belirtilen elemanları ekler ve dizinin yeni uzunluğunun değerini döndürür. Sözdizimi,

dizi.unshift([eleman1[, eleman2 [, . . . [, elemanN]]]])
		

şeklindedir.

Burada,

dizi : Bir dizi (Array) nesne sınıfı örneği (Gerekli).

eleman1[, eleman2[, [, elemanN]]]] : Eklenecek elemanlar (isteğe Bağlı).
		

Bu metodun bir uygulama örneğinin sonuçları ve JavaScript kodları aşağıda görülmektedir:

/* <![CDATA[ */

// Bu Program bdelib.js Kitaplık Programından Yararlanmaktadır.

function dizininBaşınaEkle() {

var bitkiler = ['Lale', 'Glayöl'], kopyaDizi = [];
	
sonuçYaz('Orijinal Dizi : ', bitkiler.join(' | '),  'b8.2.13-uyg-1-sonuç-1');

sonuçYaz('Orijinal Dizi Uzunluğu : ', bitkiler.length, 'b8.2.13-uyg-1-sonuç-2');

diziKopyala(bitkiler, kopyaDizi);

kopyaDizi.unshift('Siklamen','Açelya');

sonuçYaz(' Güncellenmiş Dizi (unshift() işleminden sonra) : ' + kopyaDizi.join(' | '), 'b8.2.13-uyg-1-sonuç-3');

sonuçYaz(' Güncellenmiş Dizi Uzunluğu (unshift() işleminden sonra) : ', kopyaDizi.length, 'b8.2.13-uyg-1-sonuç-4');

}

sayfaYüklendiktenSonraÇalıştır(dizininBaşınaEkle);

/* ]]> */
		

Sonuç:

Bu uygulamadan da görüldüğü gibi dizinin başına yeni elemanlar eklenmekte ve yeni elemanların eklenmesi ile dizi uzunluğu değeri güncellenmektedir.

Valid XHTML 1.1