JavaScript Temelleri

Bölüm 8

Array (Dizi) Nesne Sınıfı

Bölüm 8 Sayfa 2

8.2.6 - Array (Dizi) Nesne Sınıfı Prototipinin pop() Metodu

pop Dizi nesne sınıfı prototipinin pop() metodu, bir dizinin son elemanını diziden çıkarır ve bu elemanın değerini döndürür. Kullanımı,

dizi.pop()

şeklindedir. Eğer dizi nesnesi boş bir diziyi işaret ediyorsa, undefined değeri döndürülür. Aşağıda pop() metodu için bir uygulama örneğinin sonuçları ve JavaScript programı görülmektedir:

/* <![CDATA[ */

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



function sonElemanıKes() {

var dizi=[12, 34, 56, 77, 46, 9],  yedekDizi = [], k = ''; 

sonuçYaz('Orijinal Dizi : ' , dizi.join(' | '),  'b8.2.6-uyg-1-sonuç-1');

diziKopyala(dizi, yedekDizi);

k =yedekDizi.pop();

sonuçYaz('Kesilen Eleman = ', k, 'b8.2.6-uyg-1-sonuç-2');

sonuçYaz('Kalan Dizi : ', yedekDizi.join(' | '), 'b8.2.6-uyg-1-sonuç-3');

}

sayfaYüklendiktenSonraÇalıştır(sonElemanıKes);
			
/* ]]> */
		

Bu programın uygulanması ile alınan sonuç:

şeklindedir. Bu uygulamada, pop() metodunun uygulanması ile dizinin en son elemanının kesilerek değerinin döndürüldüğü, geri kalan elemanların orijinal dizide kaldığı görülmektedir.

8.2.7 - push() Metodu

Öntanımlı dizi sınıfı prototipinin push() Metodu, bir dizinin sonuna, argümanlarını belirtildiği sıra ile ekler ve dizinin yeni uzunluğunu döndürür. Bu metodun kullanımı,

dizi.push([birim1 [birim2 [	[birimN	]]]])
		

şeklindedir. Bu metodun uygulandığı bir Örneğin uygulama sonuçları ve uygulamanın JavaScript kodları aşağıda görülmektedir:

/* <![CDATA[ */
// Bu Program bdelib.js Kitaplık Programından Yararlanmaktadır.

function elemanEkle() {

var üyeler = ['Demir Taşca', 'Galip Yertutan', 'Yakup Ulutürk'], yedekDizi = [];

sonuçYaz('Başlangıçtaki Üyeler : ', üyeler.join(' * '),  'b8.2.7-uyg-1-sonuç-1');

üyeler.push('Ayla Özel', 'Serap Sungur');

sonuçYaz('Güncellenmiş Üye Listesi : ', üyeler.join(' * '),  'b8.2.7-uyg-1-sonuç-2');
}

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

Program Sonucu :

Bu sonuçtan yeni genişletilmiş dizinin genel, bitişik-sürekli bir dizi olduğu ve yeni eleman sayısının 5 olarak saptandığı görülmektedir. Bu beklenen bir sonuçtur ve push() metodunun tanımlı bir diziye yeni bir eleman eklenmesi için çok kullanışlı olduğu görülmektedir.

Diziye push() metodu ile eklenmesi istenen yeni eleman, bir dizi ise durum değişmektedir. Burada push() metodunun uygulanması ile eklenecek tüm dizi, sanki tek bir elemanmış gibi dizi sonuna eklenir. Örnek :

/* <![CDATA[ */

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

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

function diziEkle() {
var Ekip1 = new Array ('Demir Taşca', 'Galip Yertutan', 'Yakup Ulutürk');
var Ekip2 = new Array ('Hasan Uncu', 'Filiz Güvener', 'Jale Aydınlı');
var uzatılmışDizi = null;

bilgiYaz(Ekip1.join(' @ '), 'b8.2.7-uyg-2-sonuç-1');
bilgiYaz(Ekip2.join(' @ '), 'b8.2.7-uyg-2-sonuç-2');

uzatılmışDizi = Ekip1.push(Ekip2);

bilgiYaz(Ekip1.join(' @ '), 'b8.2.7-uyg-2-sonuç-3');
bilgiYaz(uzatılmışDizi, 'b8.2.7-uyg-2-sonuç-4');
bilgiYaz(Ekip1[uzatılmışDizi - 1].join(' * '), 'b8.2.7-uyg-2-sonuç-5');
bilgiYaz(Ekip1[uzatılmışDizi - 1][0], 'b8.2.7-uyg-2-sonuç-6');
bilgiYaz(Ekip1[uzatılmışDizi - 1][1], 'b8.2.7-uyg-2-sonuç-7');
bilgiYaz(Ekip1[uzatılmışDizi - 1][2], 'b8.2.7-uyg-2-sonuç-8');
}

/* ]]> */
		

(İlk Dizi) Ekip1 :

(İkinci Dizi) Ekip2 :

(push() Işlemi) : uzatılmışDizi=Ekip1.push(Ekip2);

(Güncellenmiş Dizi) Ekip1 :

(Güncellenmiş Ekip1 Dizisinin Eleman Sayısı) yeniuzatılmışDizi =   (3 eleman + 1 dizi)

Güncellenmis Ekip1 Dizisinin Son Elemanı : Ekip1[3] =   (Güncellenmiş Ekip1 dizisinin son elemanı Ekip2 dizisidir !)

Güncellenmiş Ekip1 Dizisinin Son Elemanının İlk Elemanı : Ekip1[3,0] =

Güncellenmiş Dizinin Son Elemanının İkinci Elemanı : Ekip1[3,1] =

Güncellenmiş Dizinin Son Elemanının Üçüncü Elemanı : Ekip1[3,2] =

push() Metodu ile Eklenecek Eleman Bir Dizi ise,

Dizinin Sonuna, Sonuncu Eleman Olarak Yeni Dizinin Tümü Eklenir.

Bu Son Elemanın İç Elemanlarına, Ancak İki Boyutlu Dizi Notasyonu Kullanılarak Erişilebilir !

Yukarıdaki Sonuçlardan, push() metodunun çalışması üzerine açıklayıcı bilgiler elde edebiliriz. Ekip1 dizinin orijinal uzunluğu (eleman sayısı) 3 iken, üç elemanlı Ekip 2 dizisinin eklemesinden sonra, Ekip1 dizisinin uzunluğu (eleman sayısı) tek bir eleman eklenmiş gibi sadece bir artarak 4 e yükselmiştir. Ekip2 dizisi, Ekip1 dizisinin sonuna, Ekip1[3] elemanı olarak eklenmiştir. Eklenmiş olan Ekip1[3] elemanı, join() metodu ile gösterilmek istendiğinde,içerdiği tüm elemanlar toplu halde görülebilmektedir. Ekip1 dizisine, Ekip1[3] olarak Eklenmiş olan eski Ekip2 dizisinin içerdiği elemanlara, ancak iki boyutlu dizi notasyonu ile erişilebilmektedir.

İki boyutlu dizilerde ilk koordinat yatay, ikinci koordinat düşey ekseni belirtir. Çok boyutlu diziler, biraz ileride incelenecektir. eleman[ - 1], dizi uzunluğu - 1 yani sonuncu yatay eleman anlamına gelmektedir.

Yukarıdaki örnekte olduğu gibi iki skaler dizininin push() metodu ile birbirlerine eklenmeleri sonunda boyutu tutarsız bir dizi ortaya çıkar. Bu dizinin bir kısmı skaler, bir kısmı ise, vektörel (matris) boyutundadır. Boyut tutarsızlığı, aynı içerik tutarsızlığı gibi, dizilerin otomasyon metotları ile işlenmelerini engeller. Skaler diziler, concat () metodu ile birbirlerine eklenirlerse, yine boyut açısından tutarlı bir skaler dizi oluşur. Bu açıdan aynı boyuttan dizilerin birbirlerine eklenmeleri için, concat () metodu daha uygun olabilir.

8.2.8- reverse() Metodu

reverse() Metodu, bir dizinin elemanlarının yerleşim sırasını tersine çevirir. Sözdizimi,

dizi.reverse();
		

şeklindedir. Dizi sürekli, bitişik bir dizi değilse, dizinin simetriği geri döndürülür. Bu metod, dizinin elemanlarının sırasını değiştirdiği gibi, sırası değişmiş diziyi de geri döndürür. İstenirse, sırası değişmiş dizi başka bir diziye atanabilir. Aşağıda JavaScript kodları görülmekte olan bir uygulamada, bir dizinin eleman sırasının tersine çevrilmesi görülmektedir:

		...
k = [ 23, 56, 83];

sonuçYaz('Orijinal Dizi : ', k.join(' * '), 'b8.2.8-uyg-1-sonuç-1');

k.reverse();

sonuçYaz('Tersine Çevrilmiş Dizi : ', k.join(' * '), 'b8.2.8-uyg-1-sonuç-2');
...
		

Program Sonucu :

Bu metot yeni bir dizi yaratmaz ve eski dizinin yerleşimi tersine çevirir. Bu nedenle, reverse() metodu dizilerin kopyalanması için de kullanılamaz.

b = a.reverse(a.reverse());
		

ifadesi,

b = a;
		

bildirimi ile eşdeğerdir ve sadece dizinin referansını kopyalar. Dizilerin kopyalanması konusu 8.2 de incelenmiştir.

8.2.9 - shift() Metodu

shift() Metodu, bir dizinin ilk elemanını siler ve değerini döndürür. Sözdizimi,

dizi.shift();
		

şeklindedir. 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 ilkElemanıKes(){
var meyveler = new Array('Mango', 'Muz', 'Papaya'), ilkEleman = '', kopyaDizi = []; 

sonuçYaz('Orijinal Dizi :' , meyveler.join(' | '), 'b8.2.9-uyg-1-sonuç-1');

diziKopyala(meyveler, kopyaDizi);

ilkEleman = kopyaDizi.shift();

sonuçYaz('Dizinin İlk Elemanı :  ' , ilkEleman, 'b8.2.9-uyg-1-sonuç-2');

sonuçYaz('Dizinin Geri Kalan Elemanları : ' , kopyaDizi.join(' | '), 'b8.2.9-uyg-1-sonuç-3');
}

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

/* ]]> */
		

Sonuç :

Bu uygulamadan da görüldüğü gibi, shift() metodunun uygulanması ile, meyveler dizisinin ilk elementi kesilerek değeri döndürülmektedir.

Valid XHTML 1.1