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);