मॉड्यूल 6 · पाठ 4 का 4पाठ्यक्रम में 24/32~12 min
मॉड्यूल पाठ (4/4)
क्रमबद्ध करें
जावास्क्रिप्ट में किसी सरणी को सॉर्ट करना एक बड़ा जाल है: sort() मूल सरणी को बदल देता है
और डिफ़ॉल्ट रूप से स्ट्रिंग के रूप में सॉर्ट होता है।
जाल
JS
const nums = [10, 2, 1, 20];
nums.sort();
// [1, 10, 2, 20] ← !? sorted as strings: "1" < "10" < "2"संख्यात्मक छँटाई के लिए आपको एक तुलनित्र (a, b) => number पास करना होगा:
a - b< 0 →aपहले आता हैa - b> 0 →bपहले आता हैa - b=== 0 → क्रम अपरिवर्तित
JS
const nums = [10, 2, 1, 20];
nums.sort((a, b) => a - b);
// [1, 2, 10, 20] ← ascending order
nums.sort((a, b) => b - a);
// [20, 10, 2, 1] ← descendingफ़ील्ड के अनुसार वस्तुओं को क्रमबद्ध करना
JS
const utenti = [
{ nome: 'Anna', eta: 30 },
{ nome: 'Luca', eta: 12 },
{ nome: 'Sara', eta: 18 },
];
utenti.sort((a, b) => a.eta - b.eta);
// [{Luca,12}, {Sara,18}, {Anna,30}]स्ट्रिंग्स के लिए आप उनकी तुलना localeCompare से कर सकते हैं:
JS
const nomi = ['Bruno', 'aurora', 'Carlo'];
nomi.sort((a, b) => a.localeCompare(b));
// ['aurora', 'Bruno', 'Carlo']मूल को परिवर्तित नहीं किया जा रहा है
दो विकल्प:
JS
// 1) copy + sort
const copia = [...nums].sort((a, b) => a - b);
// 2) toSorted (modern, ES2023)
const ordinati = nums.toSorted((a, b) => a - b);इसे अजमाएं
व्यायाम#js.m6.l4.e1
प्रयास: 0लोड हो रहा है...
`sortAscending(nums)` को परिभाषित करें: संख्याओं के रूप में आरोही क्रम में क्रमबद्ध, सरणी की एक नई प्रतिलिपि लौटाएँ। मूल नहीं बदलना चाहिए.
संपादक लोड हो रहा है...
संकेत दिखाएँ
[...अंक].सॉर्ट((ए, बी) => ए - बी)
3 प्रयासों के बाद समाधान उपलब्ध है
व्यायाम की समीक्षा करें
व्यायाम#js.m6.l4.e2
प्रयास: 0लोड हो रहा है...
`sortByAgeAscending(people)` को परिभाषित करें: {नाम, उम्र } की एक सरणी दी गई है, बढ़ती उम्र के अनुसार क्रमबद्ध एक नई प्रति लौटाएं। मूल नहीं बदलना चाहिए.
संपादक लोड हो रहा है...
संकेत दिखाएँ
[...लोग].सॉर्ट((ए, बी) => ए.उम्र - बी.उम्र)
3 प्रयासों के बाद समाधान उपलब्ध है