মডিউল 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)` সংজ্ঞায়িত করুন: সংখ্যা হিসাবে আরোহী ক্রমে সাজানো অ্যারের একটি নতুন অনুলিপি ফেরত দিন। মূল পরিবর্তন করা উচিত নয়.
সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান
[...সংখ্যা]।ছাড়া((a,b) => a - b)
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
ব্যায়াম পর্যালোচনা করুন
ব্যায়াম#js.m6.l4.e2
প্রচেষ্টা: 0লোড হচ্ছে...
`sortByAgeAscending(people)` সংজ্ঞায়িত করুন: { name, age } এর একটি অ্যারে দেওয়া, বয়সের ঊর্ধ্বগতি অনুসারে সাজানো একটি নতুন কপি ফেরত দিন। মূল পরিবর্তন করা উচিত নয়.
সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান
[...মানুষ].ছাড়া((a,b) => a.age - b.age)
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ