Sobes.tech
Junior

როგორ დაალაგებდით რიცხვების მასივს?

sobes.tech AI

პასუხი AI-სგან

// შედარების ფუნქციით sort() მეთოდის გამოყენება
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // ზრდადობით სორტირება

// კლებადობით სორტირებისათვის:
// numbers.sort((a, b) => b - a);

JavaScript-ში sort() მეთოდი ადგილზე სორტირებს მასივის ელემენტებს. საწყისად, ის გარდაქმნის ელემენტებს სტრიქონებად და ლექსიკოგრაფიულად სორტირებს. სწორად რიცხვების სორტირებისთვის, უნდა მიეცეთ შედარების ფუნქცია.

შედარების ფუნქცია იღებს ორ არგუმენტს, a და b.

  • თუ ფუნქცია აბრუნებს უარყოფით რიცხვს, a იქნება b-ზე წინ.
  • თუ დადებით რიცხვს, b იქნება a-ზე წინ.
  • თუ 0, ელემენტების სორტი არ იცვლება.

რიცხვების ზრდადობით სორტირებისთვის გამოიყენება (a, b) => a - b. თუ a ნაკლებია, შედეგი უარყოფითია და a მოდის წინ. კლებადობით სორტირებისთვის გამოიყენება (a, b) => b - a. თუ b ნაკლებია, შედეგი დადებითია და b მოდის წინ.

სხვა მეთოდები (ნაკლებად გავრცელებული მარტივი რიცხვითი მასივებისთვის, მაგრამ სასარგებლოა):

  • localeCompare() მეთოდი რიცხვების სტრიქონებისთვის:

    // რეკომენდებული არა სუფთა რიცხვებისთვის, მაგრამ შეიძლება გამოყენებულ იქნას
    // თუ რიცხვები წარმოდგენილია როგორც სტრიქონები და საჭიროა ლოკალის გათვალისწინება.
    const stringNumbers = ["10", "2", "1"];
    stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
    // დაალაგებს როგორც [ "1", "2", "10" ]
    
  • მასივის კოპიის შექმნა სორტირებამდე:

    // თუ გსურთ ორიგინალი მასივი შეინარჩუნოთ
    const originalNumbers = [4, 2, 5, 1, 3];
    const sortedNumbers = [...originalNumbers].sort((a, b) => a - b);
    // ან
    // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);