مرکزی مواد پر جائیں
ماڈیول 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)' کی وضاحت کریں: صف کی ایک نئی کاپی واپس کریں، جس کو عدد کے طور پر صعودی ترتیب میں ترتیب دیا گیا ہے۔ اصل کو تبدیل نہیں کرنا چاہئے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

[...nums].sort((a, b) => a - b)

3 کوششوں کے بعد حل دستیاب ہے۔

ورزش کا جائزہ لیں۔

ورزش#js.m6.l4.e2
کوششیں: 0لوڈ ہو رہا ہے…

`sortByAgeAscending(people)` کی وضاحت کریں: { name, age } کی ایک صف کو دیکھتے ہوئے، عمر کی صعودی کے حساب سے ترتیب کردہ ایک نئی کاپی واپس کریں۔ اصل کو تبدیل نہیں کرنا چاہئے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

[...لوگ].sort((a, b) => a.age - b.age)

3 کوششوں کے بعد حل دستیاب ہے۔