Sobes.tech
Junior

Ako by ste zoradili pole čísel?

sobes.tech AI

Odpoveď od AI

// Uporaba metode sort() s funkcijo primerjave
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Naraščajoče razvrščanje

// Za padajoče razvrščanje:
// numbers.sort((a, b) => b - a);

Metoda sort() v JavaScriptu razvrsti elemente niza na mestu. Privzeto pretvori elemente v nize in jih razvrsti leksikografsko. Za pravilno razvrščanje številk je potrebno podati funkcijo primerjave.

Funkcija primerjave sprejme dva argumenta, a in b.

  • Če funkcija vrne negativno število, bo a prišel pred b.
  • Če vrne pozitivno število, bo b prišel pred a.
  • Če vrne 0, vrstni red elementov ostane nespremenjen.

Za razvrščanje številk v naraščajočem vrstnem redu se uporablja (a, b) => a - b. Če je a manjši od b, je rezultat negativen in a pride prej. Za razvrščanje v padajočem vrstnem redu se uporablja (a, b) => b - a. Če je b manjši od a, je rezultat pozitiven in b pride prej.

Druge metode (redkejše za preproste številčne nize, a uporabne):

  • Metoda localeCompare() za nize s številkami:

    // Ni priporočljivo za čiste številke, vendar se lahko uporablja
    // če so številke predstavljene kot nizi in je treba upoštevati lokalne nastavitve.
    const stringNumbers = ["10", "2", "1"];
    stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
    // Razporedi kot [ "1", "2", "10" ]
    
  • Ustvarjanje kopije niza pred razvrščanjem:

    // Če želite ohraniti izvirni niz
    const originalNumbers = [4, 2, 5, 1, 3];
    const sortedNumbers = [...originalNumbers].sort((a, b) => a - b);
    // ali
    // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);