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 փոքր է, քան b, արդյունքը բացասական է և a-ն առաջ է գալիս։
Նվազող կարգով օգտագործվում է (a, b) => b - a։ Եթե b-ն փոքր է, քան a, արդյունքը դրական է և 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);