Sobes.tech
Junior

Rəqəmlər massivini necə sıralayardınız?

sobes.tech Süni İntellekt

AI-dan cavab

// Müqayisə funksiyası ilə sort() metodundan istifadə edirik
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Artan sıralama

// Azalan sıralama üçün:
// numbers.sort((a, b) => b - a);

JavaScript-də sort() metodu, massiv elementlərini yerində sıralayır. Əsasən, elementləri simvollaşdırır və leksikografik olaraq sıralayır. Rəqəmləri düzgün sıralamaq üçün, sort()-a müqayisə funksiyası ötürmək lazımdır.

Müqayisə funksiyası iki arqument qəbul edir, ab.

  • Əgər funksiya mənfi ədəd qaytarırsa, a b-dən əvvəl gələcək.
  • Əgər müsbət ədəd qaytarırsa, b a-dan əvvəl gələcək.
  • Əgər 0 qaytarırsa, elementlərin sırası dəyişmir.

Rəqəmləri artan sırayla sıralamaq üçün (a, b) => a - b istifadə olunur. Əgər a b-dən kiçikdirsə, nəticə mənfidir və a əvvəl gəlir. Azalan sıralama üçün (a, b) => b - a istifadə olunur. Əgər b a-dan kiçikdirsə, nəticə müsbətdir və b əvvəl gəlir.

Digər metodlar (daha az istifadə olunan, amma faydalı):

  • localeCompare() metodu ilə ədədi stringlərin müqayisəsi:

    // Təmiz ədədlər üçün tövsiyə edilmir, amma istifadə oluna bilər
    // ədədlər string kimi təqdim olunursa və lokalizasiya nəzərə alınmalıdırsa.
    const stringNumbers = ["10", "2", "1"];
    stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
    // [ "1", "2", "10" ] kimi sıralayacaq
    
  • Sıralamadan əvvəl array-in nüsxəsini yaratmaq:

    // Əsas array-i qorumaq istəyirsinizsə
    const originalNumbers = [4, 2, 5, 1, 3];
    const sortedNumbers = [...originalNumbers].sort((a, b) => a - b);
    // və ya
    // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);