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() ыкмасы массивдин элементтерин жеринде сорттойт. Ал алдын ала, элементтерди жолго айландырып, лексикографтык түрдө сорттойт. Сандык маанилерди туура сорттоо үчүн, sort()ка салыштыруу функциясын берүү керек.
Салыштыруу функциясы эки аргументти кабыл алат, a жана b.
- Эгер функция терс сан кайтарса,
ab-ден мурда келет. - Эгер оң сан кайтарса,
ba-дан мурда келет. - Эгер 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);