Javascript ile sayıları dizilerini sıralama işlemi için array sort metodunu kullanıyoruz. sort metodu sayı veye metin dizilerini de sıralamak için kullanılır.
Array.protype.sort Metodu
sort metodu bir diziyi kendi içerisinde sıralar ve sonucu geri dönderir. Sıralama işlemini UTF-16 kod sistemine göre yapar. Bunun anlamı girdileri metin olarak kabul ederek, karekterlere göre sıralama yapacağıdır.
Eğer sayılar içeren bir dizi sıralanmak isteniyorsa veya farklı nesneler sıralanmak isteniyorsa, bir callback fonksiyonu sayesinde özel bir sıralama işlemi yapılabilir.
Örnek sort kullanımı aşağıdaki gibidir.
const isimler = ["Ahmet", "Kenan", "Dursun"];
const sonuc = isimler.sort();
console.log(sonuc);
// Konsola
// [ 'Ahmet', 'Dursun', 'Kenan' ]
// yazdırır.Şimdi sayılardan oluşan bir diziyi sıralamaya çalışalım.
const sayilar = [3, 1, 11, 22, 5, ];
const sonuc = sayilar.sort();
console.log(sonuc);
// Konsola
// [ 1, 11, 22, 3, 5 ]
// yazdırır.İkinci örnekteki sonuca baktığımızda 11 sayısı en büyük sayı olduğu halde sıralama sonrası ikinci sırada bulunuyor. Bunun nedeni sort metodunun ön tanımlı olarak girdileri UTF-16 karakterleri kabul edip ona göre sıralama yapması. Şimdi sayılar üzerinde sıralama nasıl yaparız onu görelim.
Javascript Sayıları Küçükten Büyüğe Sıralama
Eğer özel bir sıralama yapacaksak, mesela sayıları veya özel bir nesneyi sıralayacaksak kendi sıralama metodunu yazmak zorundayız. Bunu sort metoduna bir callback fonksiyonu geçerek yapabiliriz.
Bu fonksiyon kendine verilen iki parametrenin birbirlerine karşı durumlarını denetler ve küçük, büyük veya eşit olma durumlarına göre -1, 1 veya 0 değeri geri dönder. Bu sonuca göre sort metodu sıralamayı yapar. Şimdi sayıları küçükten büyüğe doğru sıralama yaptıralım.
const karsilastir = (a, b) => {
if( a < b ) {return -1};
if( a > b ) {return 1};
return 0;
}
const sayilar = [3, 1, 11, 22, 5 ];
const sonuc = sayilar.sort(karsilastir);
console.log(sonuc);
// Konsola
// [ 1, 3, 5, 11, 22 ]
// yazdırır.Yukarıdaki kodu çalıştırdığımızda sayilar dizimizin küçükten büyüğe sıralanmış olarak geri dönderildiğini görüyoruz. Buradaki işlemin mantığı basitir.
- İlk olarak sort metodu sırasıyla ikişer adet sayıyı karsilastir fonksiyonuna gönderir.
- Sonrasında karsilastir fonksiyonu bu iki sayıyı alır ve karşılaştırma yapar.
- Eğer ilk sayı küçükse geriye -1 değerini dönderir.
- Eğer ilk sayı büyükse geriye 1 değerini dönderir.
- Ve eğer iki sayı eşitse geriye 0 değerini dönderir.
- Gelen değerlere göre sort metodu sayıları sıralar.
- Son olarak sıralanmış diziyi geri dönderir.
Bu kadar basit. Bu işlemin kısa yolu aşağıdaki şekildedir.
const sayilar = [3, 1, 11, 22, 5 ];
const sonuc = sayilar.sort((a, b) => b-a);
console.log(sonuc);
// Konsola
// [ 1, 3, 5, 11, 22 ]
// yazdırır.Javascript Sayıları Büyükten Küçüğe Sıralama
Sıralama mantığını anladıktan sonra sayıları büyükten küçüğe sıralamanın da çok kolay olduğu görülecektir. Tek yapmamız gereken geriye döndürülen değerleri oluştururken, tersten sıralama yapacağımız için eğer sayı büyükse geriye -1 değerini ve eğer sayı küçükse geriye 1 değerini döndürmek gerekir.
const karsilastir = (a, b) => {
if( a < b ) {return 1};
if( a > b ) {return -1};
return 0;
}
const sayilar = [3, 1, 11, 22, 5 ];
const sonuc = sayilar.sort(karsilastir);
console.log(sonuc);
// Konsola
// [ 22, 11, 5, 3, 1]
// yazdırır.Artık arraya girilen sayılar büyükten küçüğe doğru sıralanmış oldu. Bu işlemin kısa yolu şu şekildedir.
const sayilar = [3, 1, 11, 22, 5 ];
const sonuc = sayilar.sort((a, b) => b-a);
console.log(sonuc);
// Konsola
// [ 22, 11, 5, 3, 1]
// yazdırır.Sonuç
Javascript sayıları sıralamak için array sort metodunu kullanır. Sıralama işlemini doğru olarak yapmak için özel bir karşılaştırma fonksiyonu yazmak gerekir.
Javascript diziler ile ilgili sormak istediğiniz soruları yorumlardan sorabilirsiniz.
