JavaScript Array Metodları:sort() & toSorted()
sort() Metodu
sort: dizi elemanlarını, Unicode değerlerine göre küçükten büyüğe doğru sıralar. Dizi kendisi üzerinde değişiklik yapmaktadır.
let rakamlar = [5,2,0,4,1,9,7]
rakamlar.sort() // [0, 1, 2, 4, 5, 7, 9]
let isimler = ["Yeliz","Gürkan","Murat","Burak","Ebru"]
isimler.sort() // [Burak", "Ebru", "Gürkan", "Murat", "Yeliz"]
sort metodu ile sayıları sıralamak istediğimizde hatalı sonuçlar alırız. Bu durumu düzeltmek için: sort metoduna karşılaştırma fonksiyonu (comparison function) eklenmelidir. Küçükten büyüğe doğru sıralamak için: a - b, büyükten küçüğe doğru sıralamak için: b - a olarak return edilmelidir.
let sayilar1 = [120,195,17,23,5,2,47,11,54]
sayilar1.sort() // [11, 120, 17, 195, 2, 23, 47, 5, 54] -> hatalı sıralama
sayilar1.sort((a, b) => a - b)
sayilar1 // [2, 5, 11, 17, 23, 47, 54, 120, 195]
sayilar1.sort((a, b) => b - a)
sayilar1 // [195, 120, 54, 47, 23, 17, 11, 5, 2]
toSorted() Metodu
toSorted: dizi elemanlarını, Unicode değerlerine göre küçükten büyüğe doğru sıralar. sort metodundan farklı olarak: dizinin kendisi üzerinde değişiklik yapmaz. Sonuçlar bir değişkene atanarak kullanılabilir.
let sayilar2 = [8,2,1,7,9,0,3]
let sayilar3 = sayilar2.toSorted()
sayilar2 // [8, 2, 1, 7, 9, 0, 3]
sayilar3 // [0, 1, 2, 3, 7, 8, 9]
toSorted metodu sayısal ifadeler için: sorted metodunda olduğu gibi hatalı sıralama yapmaktadır. Karşılaştırma fonksiyonu kullanarak, doğru sıralama yaptırılabilir.
let sayilar4 = [480,19,35,103,17,103]
let sayilar5 = sayilar4.toSorted()
sayilar5 // [103, 103, 17, 19, 35, 480] -> hatalı sıralama
let sayilar6 = sayilar4.toSorted((a, b) => a - b)
sayilar6 // [17, 19, 35, 103, 103, 480]
let sayilar7 = sayilar4.toSorted((a, b) => b - a)
sayilar7 // [480, 103, 103, 35, 19, 17]