myNotlar Logo

Array.sort


 Array.sort metodu, Array dizisinin elemanlarını sözlük dizilimine göre sıralar. sort metodu uygulandıktan sonra bütün elemanların yerleri tekrar düzenlenir.

Sözdizimi

sort( fonksiyon )
  • fonksiyon : Opsiyonel. Karşılaştırma için fonksiyon tanımlar.

Eğer karşılaştırma fonksiyonu tanımlanırsa array dizisi fonksiyondan dönen değerlere göre sıralama yapar.

Aşağıdaki örnek, 5 şehrimizin isimlerinin ve 100 ve 2 rakamlarının tanımlı olduğu bir Array dizisine sort metodunun normal kullanımından sonraki etkisini göstermektedir.

<script type="text/javascript">
	var myArray = ["İstanbul", "Ankara", "İzmir", "Bursa", "Adana", "100", "2"];
	
	document.write( myArray.join(" + ") + "<br/>" ); // Önce

	myArray.sort();

	document.write( myArray.join(" + ") + "<br/>" ); // Sonra
</script>
Canlı Sonuç

JavaScript sort metodu içinde aşağıda gösterilen şablonda bir karşılaştırma fonksiyonu tanımlıdır. sort metodu fonksiyondan dönen değerlere göre bir sıralama yapar. Fakat bu fonksiyon, elemanın türüne ki bunlar rakam, metin, boolean, tarih veya sizin tanımladığınız bir nesne olabilir bakmaksızın sözlük sırasına göre karşılaştırma yapar.

function KARSILASTIR(X, Y)
{
   X < Y  return -1; // X, Y'den küçükse -1 döndür.

   X > Y  return 1;  // X, Y'den büyükse 1 döndür.

   return 0;  // X ile Y eşitse 0 döndür.
}

Yukarıdaki şablona uygun bir fonksiyon tanımladığınız zaman istediğiniz kriterlere göre sort metoduna ilgili değerler için büyüklük-küçüklük bildirimi sağlayabilirsiniz.

Aşağıdaki örnek, şehir adı ve plakalarını içeren nesnelerden oluşmuş bir Array dizisi içinde, tanımladığımız bir karşılaştırma fonksiyonu ile nasıl sıralama yapılacağını göstermektedir.

<script type="text/javascript">
// 'SehirNesne' nesnesinin kurucu fonksiyonu
SehirNesne = function(_adi, _plaka) { this.Adi = _adi; this.Plaka = _plaka; }
// Dizi elemanlarını sayfaya yazdırır.
function DiziyiGoster(ArrayDizi) { for(i = 0; i < ArrayDizi.length; i++) { var Sehir = ArrayDizi[i]; document.write( Sehir.Adi + " : " + Sehir.Plaka + "<br/>" ); } }
// Plaka karşılaştırması yapar.
function karsilastir(X, Y) { if( X.Plaka < Y.Plaka ) return -1; if( X.Plaka > Y.Plaka ) return 1; return 0; // Birbirlerinden büyük veya küçük değillerse eşitlerdir! }
var Sehirler = new Array(5); // Her sıraya karşılık bir 'SehirNesne' tanımlanıyor.
Sehirler[0] = new SehirNesne("Adana", 1); Sehirler[1] = new SehirNesne("Aksaray", 68); Sehirler[2] = new SehirNesne("Ankara", 6); Sehirler[3] = new SehirNesne("Kilis", 79); Sehirler[4] = new SehirNesne("İstanbul", 34); DiziyiGoster(Sehirler); Sehirler.sort(karsilastir); DiziyiGoster(Sehirler);
</script>
Canlı Sonuç
 
myNotlar Hakkında
Telif Hakkı © 2007-2009 mynotlar.com Tüm Hakları Saklıdır. Kopyalanamaz. Yayınlanamaz.
E-Posta : support@myNotlar.com

| Tek Kişilik Oyunlar | Sudoku | Oyunlar |