Junior
Bir sayı dizisini nasıl sıralardınız?
sobes.tech yapay zeka
AI'dan gelen yanıt
// Karşılaştırma fonksiyonuyla sort() metodunu kullanıyoruz
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Artan sıralama
// Azalan sıralama için:
// numbers.sort((a, b) => b - a);
JavaScript'teki sort() metodu, dizinin öğelerini yerinde sıralar. Varsayılan olarak, öğeleri string'e dönüştürür ve sözlük sırasına göre sıralar. Sayıları doğru şekilde sıralamak için, sort()'a bir karşılaştırma fonksiyonu geçirilmelidir.
Karşılaştırma fonksiyonu iki argüman alır, a ve b.
- Eğer fonksiyon negatif bir sayı dönerse,
ab'den önce gelir. - Pozitif bir sayı dönerse,
ba'den önce gelir. - 0 dönerse, öğelerin sırası değişmez.
Sayısal değerleri artan sıralamak için (a, b) => a - b kullanılır. Eğer a b'den küçükse, sonuç negatiftir ve a önce gelir.
Azalan sıralama için (a, b) => b - a kullanılır. Eğer b a'dan küçükse, sonuç pozitiftir ve b önce gelir.
Diğer yöntemler (daha az yaygın, ama faydalı):
-
localeCompare()metodu ile sayısal stringleri karşılaştırmak:// Tam sayılar için önerilmez, ama kullanılabilir // sayılar string olarak temsil ediliyorsa ve yerel ayar dikkate alınacaksa. const stringNumbers = ["10", "2", "1"]; stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })); // [ "1", "2", "10" ] şeklinde sıralar -
Sıralamadan önce dizinin bir kopyasını oluşturmak:
// Orijinal diziyi korumak istiyorsanız const originalNumbers = [4, 2, 5, 1, 3]; const sortedNumbers = [...originalNumbers].sort((a, b) => a - b); // veya // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);