మాడ్యూల్ పాఠాలు (4/4)
క్రమబద్ధీకరించు
జావాస్క్రిప్ట్లో శ్రేణిని క్రమబద్ధీకరించడం పెద్ద ట్రాప్ను కలిగి ఉంది: sort() అసలు శ్రేణిని మార్చుతుంది
మరియు ** డిఫాల్ట్గా స్ట్రింగ్లుగా క్రమబద్ధీకరించబడింది**.
ఉచ్చు
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 → ఆర్డర్ మారలేదు
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ఫీల్డ్ ద్వారా వస్తువులను క్రమబద్ధీకరించడం
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తో పోల్చవచ్చు:
const nomi = ['Bruno', 'aurora', 'Carlo'];
nomi.sort((a, b) => a.localeCompare(b));
// ['aurora', 'Bruno', 'Carlo']అసలు మ్యుటేషన్ చేయడం లేదు
రెండు ఎంపికలు:
// 1) copy + sort
const copia = [...nums].sort((a, b) => a - b);
// 2) toSorted (modern, ES2023)
const ordinati = nums.toSorted((a, b) => a - b);దీనిని ప్రయత్నించండి
`sortAcending(nums)`ని నిర్వచించండి: శ్రేణి యొక్క కొత్త కాపీని తిరిగి ఇవ్వండి, ఆరోహణ క్రమంలో సంఖ్యల వలె క్రమబద్ధీకరించబడింది. అసలు మారకూడదు.
సూచనను చూపించు
[...సంఖ్యలు].క్రమీకరించు((ఎ, బి) => ఎ - బి)
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది
వ్యాయామం సమీక్షించండి
`sortByAgeAscending(వ్యక్తులు)`ని నిర్వచించండి: {పేరు, వయస్సు } శ్రేణిని అందించి, వయస్సు ఆరోహణ ఆధారంగా క్రమబద్ధీకరించబడిన కొత్త కాపీని అందించండి. అసలు మారకూడదు.
సూచనను చూపించు
[...ప్రజలు].క్రమబద్ధీకరించు((a, b) => a.age - b.age)
3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది