জাভাস্ক্রিপ্টের ডিফল্ট sort() মেথড স্ট্রিং হিসেবে সর্ট করে, তাই সংখ্যা সর্ট করলে ভুল ফলাফল আসে (যেমন: 10, 2, 30 -> 10, 2, 30)। সংখ্যা সঠিকভাবে সর্ট করতে কমপারেটর ফাংশন ব্যবহার করতে হয়।
উদাহরণ কোড
var arrayOfIntegers = [67, 45, 98, 52];
arrayOfIntegers.sort(function (first, second) {
return first - second;
});
console.log(arrayOfIntegers);
চলানো পদ্ধতি
প্রোগ্রামটি রান করতে নিচের কমান্ড ব্যবহার করুন:
node fileName.js
এখানে ফাইল নাম demo310.js।
আউটপুট
PS C:\Users\Amit\javascript-code> node demo310.js
[ 45, 52, 67, 98 ]
ব্যাখ্যা
sort()ডিফল্টভাবে এলিমেন্টগুলোকে স্ট্রিংয়ে কনভার্ট করে লেক্সিকোগ্রাফিক্যালি সর্ট করে।- কমপারেটর ফাংশন
(a, b) => a - b:- নেগেটিভ রিটার্ন করলে
aআগে যাবে - পজিটিভ রিটার্ন করলে
bআগে যাবে - শূন্য রিটার্ন করলে ক্রম অপরিবর্তিত
- নেগেটিভ রিটার্ন করলে
first - secondআরোহী ক্রম (ascending) দেয়। নিরবচ্ছিন্ন ক্রম (descending) করতেsecond - firstকরুন।
ES6 Arrow Function Syntax
const numbers = [67, 45, 98, 52];
numbers.sort((a, b) => a - b); // ascending
console.log(numbers); // [45, 52, 67, 98]
numbers.sort((a, b) => b - a); // descending
console.log(numbers); // [98, 67, 52, 45]
সাধারণ ভুল এবং সমাধান
| ভুল কোড | সমস্যা | সঠিক কোড |
|---|---|---|
[10,2,30].sort() |
স্ট্রিং সর্ট: [10, 2, 30] | [10,2,30].sort((a,b)=>a-b) |
arr.sort((a,b) => a > b) |
বুলিয়ান রিটার্ন (সঠিক কমপারেটর নয়) | arr.sort((a,b) => a - b) |
অবজেক্ট অ্যারে সর্ট করা
const users = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 20 },
{ name: 'Bob', age: 30 }
];
users.sort((a, b) => a.age - b.age); // বয়স অনুযায়ী আরোহী