ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 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లోడ్ అవుతోంది...

`sortAcending(nums)`ని నిర్వచించండి: శ్రేణి యొక్క కొత్త కాపీని తిరిగి ఇవ్వండి, ఆరోహణ క్రమంలో సంఖ్యల వలె క్రమబద్ధీకరించబడింది. అసలు మారకూడదు.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

[...సంఖ్యలు].క్రమీకరించు((ఎ, బి) => ఎ - బి)

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం సమీక్షించండి

వ్యాయామం#js.m6.l4.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

`sortByAgeAscending(వ్యక్తులు)`ని నిర్వచించండి: {పేరు, వయస్సు } శ్రేణిని అందించి, వయస్సు ఆరోహణ ఆధారంగా క్రమబద్ధీకరించబడిన కొత్త కాపీని అందించండి. అసలు మారకూడదు.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

[...ప్రజలు].క్రమబద్ధీకరించు((a, b) => a.age - b.age)

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది