“JavaScript’de Dizileri Sıralama (Sorting Arrays)”

JavaScript Rehberi

“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 < 0a önce gelir
  • a - b > 0b önce gelir
  • 0 → 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?

  • localeCompare dil 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.” 😄

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir