Sort Function Uses In Bengali JavaScript Series ⇾ Chapter Nine (Part -3)
Find and FindIndex Function, Sort, Some and Every Function Uses, Return a Function from Another Function, Recursive, Currying, Function Composition

♗ Love To Play With → JavaScript & NodeJS.
✢ Interested → Web & Backend Development.
↯ Current Stack → MERN Stack
079. Sort Function Uses :
এই সেকশন আমরা array এর মজার একটা মেথড নিয়ে আলোচনা করতে যাচ্ছি ।
SORT:
sort মেথড আমাদের array এর মধ্যে element গুলোকে ছোট থেকে বড় বা বড় থেকে ছোট সাজাতে সাহায্য করে । মানে আমরা যখন কোন ডাটাকে ascending বা descending আকারে সাজাতে চাই সেটাই মূলত sorting ।এই sort মেথড আমাদের মেইন যে array থাকবে তাকেই replace করে দিবে তাই আমরা array কেই কনসোল লগ করতে পারি । বিহাইন্ড দ্যা সিন্ sort কিছু এলগোরিদম ব্যবহার করে যা কিছুটা জটিল ,তাই আমরা এর ইমপ্লিমেন্টেশন দেখব না ।ব্যবহার দেখব ।
ধর তোমারকাছে ২ টা array আছে একটা সংখ্যা দিয়ে পরিপূর্ন অন্যটা কিছু person এর অবজেক্ট ।তোমাকে শর্ট করে সাজাতে হবে ছোট থেকে বড় বা বড় থেকে ছোট ।

var person = [
{
name: "Tanvir Mehedi",
age: 26,
},
{
name: "Silran Mia",
age: 32,
},
{
name: "Pokash Paul",
age: 23,
},
{
name: "Rithem Roya",
age: 24,
},
];
var arr = [1, 4, 5, 7, 8, 2, 3, 4, 25, 22, 33, 44, 90, 89, 5.6, 7.4];
তাহলে এই দুইটা array কে আমরা কিভাবে sort করতে পারি ?
প্রথমেই আমরা দেখব arr যেটা অনেক গুলো সংখ্যার সমষ্টি ।আমরা চাচ্ছি ছোট থেকে বড় ক্রমানুসারে সাজান থাকুক কারণ এলমেল হয়ে আছে ।

arr.sort();
console.log(arr);
আমরা আগেই জেনেছি sort আমাদের নতুন কোন array রিটার্ন করে না ,তাই কোন ভ্যারিয়েবল এ ষ্টোর করার দরকার নাই । মেইন array কে কনসোল লগ করেছি ।কিন্তু তুমি খেয়াল করো আমরা sort মেথড ব্যবহার করেও ঠিকভাবে আউটপুট পাইনি ।কিছু কিছু কাজ করেছে আবার কিছু এলমেল হয়ে আছে ।এই প্রব্লেম সল্ভ করতে আমাদের কলব্যাক ফাঙ্কশন এর সাহায্য নিতে হবে ।যেটা sort মেথড provide করে থাকে ।আমরা এই কলব্যাক এর মধ্যে দুইটা পেরামিটার পাই আমরা a এবং b নিতে পারি ।এই দুই পেরামিটার এর উপর ভিত্তি করে আমরা কন্ডিশন চালাব ।

arr.sort(function (a, b) {
if (a > b) {
return 1;
} else if (a < b) {
return -1;
} else {
return 0;
}
});
// console.log(arr); //ascending
console.log(arr); //descending
ascending order করার সময় কোডে কন্ডিশন চালিয়ে বলেদিয়েছি যদি a > b মানে a b এর থেকে বড় হলে রিটার্ন করবে ১ ।এছাড়া যদি a <b হয় মানে a এর মান b এর থেকে ছোট হয় তাহলে রিটার্ন করবে -১ ।আর কোনটা নাহলে রিটার্ন করবে ০। এই যে ১,-১ বা ০ রিটার্ন করলে কি হবে সেটা এলগোরিদম ব্যবহার করে sort ফাঙ্কশন এ বলা আছে ।আমরা শুধু কলব্যাক ব্যবহার করব। তাহলে এখন আউটপুট আসবে ছোট থেকে বড় ।
আবার যদি বড় থেকে ছোট সাজাতে চাই মানে descending order এ তাহলে আমরা জাস্ট একটু লজিক চেঞ্জ করে দিব ।a এর মান b এর থেকে বড় হলে এবার রিটার্ন করবে -১ আর else if a এর মান b এর থেকে ছোট হলে রিটার্ন করবে ১ । জাস্ট এইটুকু চেঞ্জ তোমায় descending order আউটপুট দিবে ।
আমরা খুব সহজে নাম্বার এর array কে sort করতে পারলাম কিন্তু আমরা কি person array অবজেক্ট কে sort করতে পারব ।
কোড দেখে আসি :

var person = [
{
name: "Tanvir Mehedi",
age: 26,
},
{
name: "Silran Mia",
age: 32,
},
{
name: "Pokash Paul",
age: 23,
},
{
name: "Rithem Roya",
age: 24,
},
];
person.sort();
console.log(person);
আমরা যখন person কে sort করতে যাচ্ছি তখন কোন চেঞ্জ করছে না ।যেমন আগে ছিল ঠিক তেমনি রিপ্লেস করে রেখে দিচ্ছে ।array এর object element নিয়ে কাজ করতে কলব্যাক লাগবেই ।আমরা কলব্যাক ছাড়া কিছুই করতে পারব না ।তাহলে আমরা এখন দেখতে চাচ্ছি কলব্যাক এর পেরামিটার গুলোতে আমরা কি ভ্যালু পাচ্ছি ।

person.sort(function (a, b) {
console.log(a, b);
});
যখন কলব্যাক ব্যবহার করে a ও b এর মান কনসোল করছি আমরা অবজেক্ট গুলোকে পাচ্ছি element হিসেবে ।আর যেহেতু a এবং b অবজেক্ট তাই আমরা কন্ডিশন চালানোর সময় প্রপার্টি acess করে কন্ডিশন apply করতে পারি । যেমন ধরো age প্রপার্টি, আমরা চাইলেই প্রত্যেক পার্সনের age তুলনা করে sort করতে পারি :

person.sort(function (a, b) {
if (a.age > b.age) {
return 1;
} else if (a.age < b.age) {
return -1;
} else {
0;
}
});
console.log(person);
ascending order সাজাতে আমরা a অবজেক্ট এর age প্রপার্টি dot নোটেশন ব্যবহার করে access করেছি এবং b.age acess করে তুলনা করেছি এবং রিটার্ন করেছি ১।এভাবে করে else if এবং else ব্যবহার ও রিটার্ন করে আমরা ছোট থেকে বড় অনুপাতে অবজেক্ট কে সাজাতে পারি ।
আর তোমার অবশ্যই মনে আছে কিভাবে আমরা descending order পেতে পারি । se সেটা নিজে চেষ্টা করে দেখ ।
আশাকরি বুঝছ আমরা কলব্যাক ফাঙ্কশন ব্যবহার করে জাভাস্ক্রিপ্ট এর sort মেথড ব্যবহার করে array কে শর্ট করতে পারি ।এখন সেই array এর মধ্যে নাম্বার ,অবজেক্ট বা যে কোন ডাটা থাকতে পারে ।





