“Bir dizi ya kontrol altındadır… ya da production’da rezil eder.” 😅
JavaScript’te dizi sıralamak tek satırlık gibi görünür ama arka planda minik şeytanlar çalışır.
Bu yazıda:
✔️ Neden yanlış sıralanıyor
✔️ sort() gerçekte ne yapıyor
✔️ Sayı, string, obje, Türkçe karakter
✔️ Güvenli ve profesyonel kullanım
✔️ Gerçek hayatta işe yarayan püf noktaları
hepsini bol örnekle, bol mizahla anlatıyoruz.
📦 1. sort() Metodu: Sessiz Ama Tehlikeli
JavaScript’te dizileri sıralamak için kullanılan ana metod:
array.sort()
Ama…
Bu metod masum görünür, ama arkadan iş çevirir 😄
🔍 İlk Deneme (Masum Hata)
let numbers = [1, 10, 2, 5];
numbers.sort();
console.log(numbers);
📤 Çıktı:
[1, 10, 2, 5]
🤨 “Bu sıralı mı şimdi?”
🧠 Neler Oluyor Burada?
sort() varsayılan olarak:
👉 Elemanları string’e çevirir
👉 Sözlük sırasına göre sıralar
Yani JS kafasında şunu yapar:
["1", "10", "2", "5"]
📌 Kural:
sort()matematikçi değil, edebiyatçı 😄
🔢 2. Sayıları Doğru Düzgün Sıralamak (Compare Function)
İşte işin kalbi 💓sort() içine karşılaştırma fonksiyonu verirsen kontrol sende olur.
✅ Artan Sıralama (Küçükten Büyüğe)
let numbers = [1, 10, 2, 5];
numbers.sort((a, b) => a - b);
console.log(numbers);
📤 Çıktı:
[1, 2, 5, 10]
🧠 Bu Fonksiyon Ne Yapıyor?
a - b < 0→aönce gelira - b > 0→bönce gelir0→ yer değiştirme yok
🎯 Yani:
(2, 10) => 2 - 10 = -8 → 2 önce
🔽 Azalan Sıralama (Büyükten Küçüğe)
numbers.sort((a, b) => b - a);
📤 Çıktı:
[10, 5, 2, 1]
📌 Ezber Tüyosu:
- Artan →
a - b - Azalan →
b - a
🔤 3. String Dizileri: Sorunsuz Gibi… Ama Değil
let names = ["Zeynep", "Ahmet", "Mehmet", "Can"];
names.sort();
console.log(names);
📤 Çıktı:
["Ahmet", "Can", "Mehmet", "Zeynep"]
Buraya kadar her şey güzel 👍
Ama şimdi Türkçe karakter sokalım.
🇹🇷 4. Türkçe Karakterler ve localeCompare (Hayat Kurtaran)
let cities = ["İzmir", "Ankara", "Çanakkale", "Bursa"];
cities.sort();
console.log(cities);
😬 Büyük ihtimalle yanlış sıralanır.
✅ Doğru ve Profesyonel Yol
cities.sort((a, b) => a.localeCompare(b, "tr"));
console.log(cities);
📤 Çıktı:
["Ankara", "Bursa", "Çanakkale", "İzmir"]
🧠 Neden?
localeComparedil kurallarını bilir"tr"→ Türk alfabesine göre sıralar
📌 Gerçek Hayat İpucu:
E-ticaret, listeleme, admin panel → kesinlikle localeCompare kullan
🧍♂️ 5. Obje Dizileri (Gerçek Hayat Burada Başlar)
let users = [
{ name: "Ayşe", age: 25 },
{ name: "Mehmet", age: 30 },
{ name: "Can", age: 20 }
];
🎂 Yaşa Göre Sıralama
users.sort((a, b) => a.age - b.age);
📤 Çıktı:
[
{ name: "Can", age: 20 },
{ name: "Ayşe", age: 25 },
{ name: "Mehmet", age: 30 }
]
📌 Mantık:
JS sadece sayıları değil, objenin içindeki sayıları da karşılaştırabilir.
🔤 İsme Göre (Türkçe Uyumlu)
users.sort((a, b) => a.name.localeCompare(b.name, "tr"));
💡 Aynı kural string’ler için geçerli.
⚠️ 6. En Tehlikeli Tuzak: sort() Orijinal Diziyi Bozar!
let arr = [3, 1, 2];
let sortedArr = arr.sort();
😱 UYARI:arr artık [1, 2, 3]
🛡️ Güvenli Profesyonel Kullanım
let sortedArr = [...arr].sort((a, b) => a - b);
📌 Neden önemli?
- React state
- Redux
- Vue data
- Production bug’ları 😅
“Bir diziyi kopyalamadan sort ediyorsan, cesursundur… ama yalnız değilsindir.”
🚀 7. İleri Seviye: Birden Fazla Kritere Göre Sıralama
let people = [
{ name: "Ali", age: 30 },
{ name: "Ali", age: 20 },
{ name: "Veli", age: 25 }
];
Önce isim, sonra yaş
people.sort((a, b) => {
if (a.name === b.name) {
return a.age - b.age;
}
return a.name.localeCompare(b.name, "tr");
});
📌 Bu seviye genelde interview sorusudur 😉
🧠 8. Mini Cheat Sheet (Kaydetmelik)
- ❌
sort()tek başına → riskli - ✅ Sayılar →
(a, b) => a - b - 🔽 Azalan →
(a, b) => b - a - 🇹🇷 Türkçe →
localeCompare("tr") - 🧍♂️ Objeler → property üzerinden karşılaştır
- 🛡️ Orijinali koru →
[...array]
🎯 Son Söz
JavaScript’te dizileri sıralamak:
“Basit başlar, derinleşir, ustalaşınca keyif verir.” 😄
