কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে ইন্টিজার অ্যারে সঠিকভাবে সর্ট করা

জাভাস্ক্রিপ্টের ডিফল্ট 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); // বয়স অনুযায়ী আরোহী
  1. জাভাস্ক্রিপ্টে Array.prototype.sort() মেথড

  2. জাভাস্ক্রিপ্টে মিশ্র নিউমেরিক/আলফানিউমেরিক অ্যারে সর্ট করা

  3. জাভাস্ক্রিপ্টে ইন্টিজার অ্যারে সঠিকভাবে সর্ট করা

  4. জাভাস্ক্রিপ্টে অ্যারে ইনডেক্স অনুযায়ী সর্ট এবং ম্যাপ