Junior
Kā jūs sakārtotu skaitļu masīvu?
sobes.tech AI
Atbilde no AI
// Izmanto `sort()` metodi ar salīdzināšanas funkciju
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Kārtošana pieaugošā secībā
// Lai kārtotu dilstošā secībā:
// numbers.sort((a, b) => b - a);
sort() metode JavaScript kārto masīva elementus vietā. Pēc noklusējuma tā pārveido elementus uz virkni un kārto leksikogrāfiski. Lai pareizi kārtotu skaitļus, jānodod sort() salīdzināšanas funkcija.
Salīdzināšanas funkcija pieņem divus argumentus, a un b.
- Ja funkcija atgriež negatīvu skaitli,
abūs pirmsb. - Ja funkcija atgriež pozitīvu skaitli,
bbūs pirmsa. - Ja funkcija atgriež 0, elementu kārtība nemainās.
Skaitļu kārtošanai pieaugošā secībā izmanto (a, b) => a - b. Ja a ir mazāks par b, rezultāts būs negatīvs, un a stāsies pirms b.
Skaitļu kārtošanai dilstošā secībā izmanto (a, b) => b - a. Ja b ir mazāks par a, rezultāts būs pozitīvs, un b stāsies pirms a.
Citas metodes (mazāk bieži lietotas vienkāršiem skaitļu masīviem, bet noderīgas):
-
localeCompare()metode ar skaitļiem kā virknēm:// Nav ieteicams lietot tikai skaitļiem, bet var tikt izmantots // ja skaitļi ir kā virkne un jāņem vērā lokalizācija. const stringNumbers = ["10", "2", "1"]; stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })); // Sakārtos kā [ "1", "2", "10" ] -
Masyva kopijas izveide pirms kārtošanas:
// Ja vēlaties saglabāt sākotnējo masīvu const originalNumbers = [4, 2, 5, 1, 3]; const sortedNumbers = [...originalNumbers].sort((a, b) => a - b); // vai // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);