JavaScript Array sort() Method - Dizi Sıralama

JavaScript sort() methodu , bir diziyi, öğelerini dizelere dönüştürerek ve bu dizeleri Unicode kod karakterleri sırasına göre karşılaştırarak (diziyi alfabetik olarak sıralar) sıralamanıza olanak tanır.

Sort() methodu yeni bir Array nesnesi oluşturmadığı , ancak iletilen diziyi sıraladığı gerçeğine hatırlatmak istiyorum.

Sözdizimi:

// Diziyi alfabetik olarak sıralar 
(Unicode kod karakterleri sırasına göre)

array.sort(); 

// Karşılaştırma işlevini kullanarak sıralar 

array.sort( function( firstValue, secondValue ) ); 

function( a, b ) : İsteğe bağlı. Alternatif bir sıralama düzenini tanımlayan bir fonksiyon. Bu Fonksiyon, aşağıdaki gibi bağımsız değişkenlere bağlı olarak negatif, sıfır veya pozitif bir değer döndürmelidir:

Sort() methodu iki değeri karşılaştırdığında, değerleri karşılaştırma fonksiyonuna gönderir ve döndürülen (negatif, sıfır, pozitif) değere göre sıralar.

ÖRNEK:

50 ile 100'ü karşılaştırırken sort() methodu karşılaştırma fonksiyonu değerleri(50,100) çağırır.

Fonksiyon, 50-100'ü hesaplar ve -50 (negatif bir değer) döndürür.

Sort() methodu 50'i 100'den küçük bir değer olarak sıralayacaktır.

Veri türleri (dizi, sayı vb.) Bir diziden diğerine farklılık gösterebilir. Bu, tek başına sort() Methodu kullanmanın her zaman uygun bir çözüm olmadığı anlamına gelir.

Bu yazıda, dizeler ve sayılar için sort() methodu kullanarak JavaScript'te bir diziyi nasıl sıralayacağınızı öğreneceksiniz.

String Dizisi


Dizelerle başlayalım:

ÖRNEK:


const Meyve = ['Portakal', 'Erik', 'Kiraz', 'Elma'];

console.log(Meyve.sort()); 

["Elma", "Erik", "Kiraz", "Portakal"]

Diziyi azalan sırada sıralamayı tercih ederseniz, bunun yerine reverse() yöntemini kullanmanız gerekir:


const Meyve = ['Portakal', 'Erik', 'Kiraz', 'Elma'];

Meyve.sort();
console.log(Meyve.reverse()); 

//["Portakal", "Kiraz", "Erik", "Elma"]

Sayılar Dizisi


Sayıları sıralamak malesef o kadar basit değil. Sıralama yöntemini doğrudan bir sayı dizisine uygularsak, beklenmedik bir sonuç göreceğiz:


const numbers = [5, 25, 14];

console.log(numbers.sort());; // 14, 25, 5

Sort() Methodu Sayılar İçin Neden Çalışmıyor?


Aslında çalışıyor, ancak bu sorun JavaScript'in sayıları alfabetik olarak sıralaması nedeniyle ortaya çıkıyor. Bunu ayrıntılı olarak açıklayayım.

A = 1, B = 2 ve C = 3'ü düşünelim.


const Arr = ['C', 'BC', 'AB'];

console.log(Arr.sort()); // [AB, BC, C]

Örnek olarak, C (3), BC (23) ve AB (12) olarak üç dizgemiz varsa, JavaScript bunları alfabetik olarak doğru olan artan bir sırada AB, BC ve C olarak sıralayacaktır.

Ancak JavaScript, sayıları (yine alfabetik olarak) 12, 23 ve 3 olarak sıralayacaktır, bu yanlıştır.

Çözüm: Karşılaştırma Fonksiyonu


Sayısal değerleri artan veya azalan düzende sıralamak için, sıralama kriterini belirleyen bir fonksiyon kullanmamız gerekir. Aşağıdaki örneği düşünün:


function(a, b) {return a - b}	

Sıralama yöntemi neyse ki negatif, sıfır ve pozitif değerleri doğru sırada sıralayabilir. Sort() methodu iki değeri karşılaştırdığında, değerleri karşılaştırma fonksiyonuna gönderir ve döndürülen değere göre sıralar.

Tek ihtiyacımız olan sort() methodu içindeki karşılaştırma fonksiyonu kullanmak:


const numbers = [5, 25, 14];

numbers.sort(function(a, b){return a - b});

console.log(numbers)// 5, 14, 25


Sayıları büyükten küçüğe sıralamak için bu seferde (b-a) yapılmalı.


const numbers = [5, 25, 14];

numbers.sort(function(a, b){return b - a});

console.log(numbers) //[25, 14, 5]

En Büyük Sayıyı Bulma


Dizideki en büyük değeri bulmak için diziyi büyükten küçüğe sıraladıktan sonra ilk elemanı yazdırmak yeterli olacaktır.


const numbers = [5, 25, 14, 120, 30, 50 ];

numbers.sort(function(a, b){return b - a});

console.log(numbers[0]) //120

En Küçük Sayı Bulma



const numbers = [5, 25, 14, 120, 30, 50 ];

numbers.sort(function(a, b){return a - b});

console.log(numbers[0]) //5

String Verileri Türkçe sıralama


JavaScript ile Türkçe sıralama yapmak için localeCompare Methodu kullanılır. LocaleCompare() methodu, geçerli yerel ayardaki iki dizeyi karşılaştırır. Yerel ayar, tarayıcının dil ayarlarına bağlıdır.


var isim = ["Ahmet", "Şengül", "Hasan", "Ömer", "Serkan", "Ülke"];

isim.sort(function(a, b){return a.localeCompare(b)});

console.log(isim);

//["Ahmet", "Hasan", "Ömer", "Serkan", "Şengül", "Ülke"]


SONUÇ:


Gördüğümüz gibi, bir dizinin öğelerini sıralamak JavaScript'te sort() methodu kullanıyoruz, Eğer Methodu doğru kullanmayı bilirsek, kolaylıkla sıralama yapılabilir. Bu makale sort() methodu JavaScript'te doğru şekilde nasıl kullanacağınızı anlamanıza yardımcı olur.

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır.

1749

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML DİV ve SPAN NEDİR?
  • HTML FORM OLUŞTURMA
  • HTML RESİM EKLEME
  • HTML KAYAN RESİM VE Marguee KULLANIMI
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML ARKAPLANA MÜZİK EKLEME
  • CSS YATAY MENÜ YAPIMI
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.