JavaScript Array Sort

জাভাস্ক্রিপ্ট অ্যারে সাজানোর বিষয়ে জানুন

JavaScript Array Sort

Alphabetic Sort

Numeric Sort

Complete JavaScript Array Reference

See Also:

Sorting an Array

sort() পদ্ধতিটি একটি অ্যারেকে বর্ণানুক্রমিকভাবে সাজায়:

উদাহরণ

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();

Reversing an Array

বিপরীত() পদ্ধতি একটি অ্যারের উপাদানগুলিকে বিপরীত করে:

উদাহরণ

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();

sort() এবং reverse() একত্রিত করে, আপনি নিচের ক্রমে একটি অ্যারে সাজাতে পারেন:

উদাহরণ

const fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
fruits.reverse();

JavaScript Array toSorted() Method

ES2023 মূল অ্যারে পরিবর্তন না করে একটি অ্যারে সাজানোর নিরাপদ উপায় হিসাবে toSorted() পদ্ধতি যুক্ত করেছে।

toSorted() এবং sort() এর মধ্যে পার্থক্য হল যে প্রথম পদ্ধতিটি একটি নতুন সর্ট তৈরি করে, মূল সাজানোর অপরিবর্তিত রেখে, যখন শেষ পদ্ধতিটি মূল সাজানোর পরিবর্তন করে।

উদাহরণ

const months = ["Jan", "Feb", "Mar", "Apr"];
const sorted = months.toSorted();

JavaScript Array toReversed() Method

ES2023 মূল অ্যারে পরিবর্তন না করে একটি অ্যারেকে বিপরীত করার নিরাপদ উপায় হিসাবে toReversed() পদ্ধতি যুক্ত করেছে।

toReversed() এবং reverse() এর মধ্যে পার্থক্য হল প্রথম পদ্ধতিটি মূল অ্যারেটিকে অপরিবর্তিত রেখে একটি নতুন অ্যারে তৈরি করে, যখন শেষ পদ্ধতিটি মূল অ্যারেটিকে বিপরীত করে।

উদাহরণ

const months = ["Jan", "Feb", "Mar", "Apr"];
const reversed = months.toReversed();

Numeric Sort

ডিফল্টরূপে, sort() ফাংশন মানগুলিকে স্ট্রিং-এ সাজায়।

এটি স্ট্রিংয়ের জন্য ভাল কাজ করে ("অ্যাপল" "কলা" এর আগে আসে)।

সংখ্যাগুলিকে স্ট্রিং হিসাবে সাজানো হলে, "25" "100" এর চেয়ে বড় কারণ "2" "1" এর থেকে বড়।

এই কারণে, সংখ্যা বাছাই করার সময় sort() পদ্ধতিটি ভুল ফলাফল দেয়।

আপনি একটি তুলনা ফাংশন প্রদান করে এটি ঠিক করতে পারেন:

উদাহরণ

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});

নিচের ক্রমে একটি অ্যারে সাজানোর জন্য একই কৌশল ব্যবহার করুন:

উদাহরণ

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});

The Compare Function

তুলনা ফাংশনের উদ্দেশ্য হল ঘটনাগুলির একটি বিকল্প ক্রম সংজ্ঞায়িত করা।

তুলনা ফাংশনটি অবশ্যই আর্গুমেন্টের উপর নির্ভর করে একটি নেতিবাচক, শূন্য বা ধনাত্মক মান প্রদান করবে:

function(a, b){return a - b}

যখন sort() ফাংশন দুটি মানের তুলনা করে, তখন এটি মানগুলিকে তুলনা ফাংশনে পাস করে এবং প্রত্যাবর্তিত (নেতিবাচক, শূন্য, ধনাত্মক) মান অনুসারে মানগুলিকে সাজায়।

উদাহরণ:

তুলনা ফাংশন দুটি মান (a, b) একসাথে তুলনা করে, অ্যারের সমস্ত মান।

40 এবং 100 তুলনা করার সময়, sort() পদ্ধতি কল তুলনা ফাংশন (40, 100)।

ফাংশনটি 40 - 100 (a - b) গণনা করে, এবং যেহেতু ফলাফলটি নেতিবাচক (-60), বাছাই ফাংশনটি 100 এর চেয়ে কম মান হিসাবে 40 কে সাজাতে হবে।

আপনি এই কোড স্নিপেটটি সংখ্যাগত এবং বর্ণানুক্রমিকভাবে সাজানোর জন্য ব্যবহার করতে পারেন:

<button onclick="myFunction1()">Sort Alphabetically</button>
<button onclick="myFunction2()">Sort Numerically</button>

<p id="demo"></p>

<script>
const points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;

function myFunction1() {
  points.sort();
  document.getElementById("demo").innerHTML = points;
}

function myFunction2() {
  points.sort(function(a, b){return a - b});
  document.getElementById("demo").innerHTML = points;
}
</script>

Sorting an Array in Random Order

উপরে ব্যাখ্যা করা সাজানোর ফাংশন ব্যবহার করে, আপনি এলোমেলো ক্রমে একটি সংখ্যাসূচক অ্যারে সাজাতে পারেন

উদাহরণ

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(){return 0.5 - Math.random()});

The Fisher Yates Method

উপরের উদাহরণে points.sort() পদ্ধতিটি সঠিক নয়। এটি অন্যদের তুলনায় কিছু সংখ্যা পছন্দ করে।

সবচেয়ে বিখ্যাত সঠিক পদ্ধতিটিকে ফিশার ইয়েটস শাফেল বলা হয় এবং এটি 1938 সালে ডেটা সায়েন্সে চালু হয়েছিল!

জাভাস্ক্রিপ্টে এই পদ্ধতিতে অনুবাদ করা যেতে পারে:

উদাহরণ

const points = [40, 100, 1, 5, 25, 10];

for (let i = points.length -1; i > 0; i--) {
  let j = Math.floor(Math.random() * (i+1));
  let k = points[i];
  points[i] = points[j];
  points[j] = k;
}

Find the Lowest (or Highest) Array Value

একটি অ্যারেতে সর্বাধিক বা সর্বনিম্ন মান খুঁজে পেতে কোনও অন্তর্নির্মিত ফাংশন নেই।

সর্বনিম্ন বা সর্বোচ্চ মান খুঁজে পেতে আপনার কাছে 3টি বিকল্প রয়েছে:

  1. অ্যারে সাজান এবং প্রথম বা শেষ উপাদান পড়ুন
  2. Math.min() Math.max()
  3. একটি বাড়িতে তৈরি কার্যকলাপ লিখুন

Find Min or Max with sort()

আপনি একটি অ্যারে সাজানোর পরে, আপনি সর্বোচ্চ এবং সর্বনিম্ন মান পেতে সূচক ব্যবহার করতে পারেন।

Sort Ascending:

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// now points[0] contains the lowest value
// and points[points.length-1] contains the highest value

Sort Descending:

const points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// now points[0] contains the highest value
// and points[points.length-1] contains the lowest value

💡দ্রষ্টব্য:

আপনি যদি শুধুমাত্র সর্বোচ্চ (বা সর্বনিম্ন) মান খুঁজে পেতে চান, পুরো অ্যারে সাজানো একটি খুব অদক্ষ পদ্ধতি।

Using Math.min() on an Array

Math.min.apply একটি অ্যারের মধ্যে সর্বনিম্ন সংখ্যা খুঁজে পেতে ব্যবহার করা যেতে পারে:

উদাহরণ

function myArrayMin(arr) {
  return Math.min.apply(null, arr);
}

Math.min.apply(null, [1, 2, 3]) Math.min(1, 2, 3) .

Using Math.max() on an Array

Math.max.apply একটি অ্যারেতে সর্বাধিক সংখ্যা খুঁজে পেতে ব্যবহার করা যেতে পারে:

উদাহরণ

function myArrayMax(arr) {
  return Math.max.apply(null, arr);
}

Math.max.apply(null, [1, 2, 3]) Math.max(1, 2, 3) .

JavaScript Array Minimum Method

জাভাস্ক্রিপ্ট অ্যারেতে সর্বনিম্ন মান খুঁজে পেতে কোনও অন্তর্নির্মিত ফাংশন নেই।

সর্বনিম্ন নম্বর খুঁজে পেতে একটি দ্রুত কোড হল একটি বাড়িতে তৈরি পদ্ধতি ব্যবহার করা।

এই ফাংশনটি একটি অ্যারের মাধ্যমে লুপ করে এবং প্রতিটি মানকে পাওয়া সর্বনিম্ন মানের সাথে তুলনা করে:

উদাহরণ (মিনিট খুঁজুন)

function myArrayMin(arr) {
  let len = arr.length;
  let min = Infinity;
  while (len--) {
    if (arr[len] < min) {
      min = arr[len];
    }
  }
  return min;
}

JavaScript Array Maximum Method

জাভাস্ক্রিপ্ট অ্যারেতে সর্বাধিক মান খুঁজে পেতে কোনও অন্তর্নির্মিত ফাংশন নেই।

সর্বোচ্চ নম্বর খোঁজার জন্য একটি দ্রুত কোড হল ঘরে তৈরি পদ্ধতি ব্যবহার করা।

এই ফাংশনটি একটি অ্যারের মাধ্যমে লুপ করে এবং প্রতিটি মানকে পাওয়া সর্বোচ্চ মানের সাথে তুলনা করে:

উদাহরণ (সর্বোচ্চ খুঁজুন)

function myArrayMax(arr) {
  let len = arr.length;
  let max = -Infinity;
  while (len--) {
    if (arr[len] > max) {
      max = arr[len];
    }
  }
  return max;
}

Sorting Object Arrays

জাভাস্ক্রিপ্ট অ্যারেতে প্রায়ই বস্তু থাকে:

উদাহরণ

const cars = [
  {type:"Volvo", year:2016},
  {type:"Saab", year:2001},
  {type:"BMW", year:2010}
];

যদিও অবজেক্টের বিভিন্ন ডাটা টাইপের বৈশিষ্ট্য রয়েছে, আমরা অ্যারে সাজানোর জন্য sort() পদ্ধতি ব্যবহার করতে পারি।

সমাধান বৈশিষ্ট্য মান তুলনা করার জন্য একটি তুলনা ফাংশন লিখতে:

উদাহরণ

cars.sort(function(a, b){return a.year - b.year});

স্ট্রিং বৈশিষ্ট্য তুলনা করা একটু বেশি জটিল:

উদাহরণ

cars.sort(function(a, b){
  let x = a.type.toLowerCase();
  let y = b.type.toLowerCase();
  if (x < y) {return -1;}
  if (x > y) {return 1;}
  return 0;
});

Stable Array sort()

ES2019 সংশোধিত সর্ট() পদ্ধতি।

2019 এর আগে, স্পেসিফিকেশনটি নন-স্ট্যাটিক বাছাই অ্যালগরিদম যেমন কুইকসর্টকে অনুমতি দেয়।

ES2019 এর পরে, ব্রাউজারগুলিকে অবশ্যই মানক সাজানোর অ্যালগরিদম ব্যবহার করতে হবে:

একটি মান অনুসারে উপাদানগুলিকে ক্রম করার সময়, উপাদানগুলিকে অবশ্যই একই মান সহ অন্যান্য উপাদানগুলির সাথে সম্পর্কিত অবস্থান রাখতে হবে।

উদাহরণ

const myArr = [
  {name:"X00",price:100 },
  {name:"X01",price:100 },
  {name:"X02",price:100 },
  {name:"X03",price:100 },
  {name:"X04",price:110 },
  {name:"X05",price:110 },
  {name:"X06",price:110 },
  {name:"X07",price:110 }
];

উপরের উদাহরণে, দাম অনুসারে বাছাই করার সময়, নামগুলি অন্য আপেক্ষিক অবস্থানে আসতে পারে না:

X01 100
X03 100
X00 100
X02 100
X05 110
X04 110
X06 110
X07 110

Complete JavaScript Reference

সম্পূর্ণ ব্যাখ্যা এবং অনেক উদাহরণ সহ সমস্ত জাভাস্ক্রিপ্ট বৈশিষ্ট্য এবং পদ্ধতির সম্পূর্ণ রেফারেন্সের জন্য, এখানে যান:

জাসিফ টিমের একটি সম্পূর্ণ জাভাস্ক্রিপ্ট রেফারেন্স।

রেফারেন্সটি 1999 থেকে 2025 পর্যন্ত সমস্ত জাভাস্ক্রিপ্ট আপডেট কভার করে।

Exercise

নিম্নলিখিত কোড বিবেচনা করুন:

const fruits = ['Apple', 'Orange', 'Banana'];
fruits.reverse();

অ্যারে ফলের ফল কী হবে?

বিপরীত() এর পরে ফলের ক্রম কী?

['Orange', 'Banana', 'Apple']
✗ ভুল! reverse() সম্পূর্ণরূপে অ্যারে বিপরীত, কিন্তু এই সময় এটি সাজানো হয় না.
['Banana', 'Orange', 'Apple']
✓ ঠিক আছে! বিপরীত() পদ্ধতিটি ক্রমটিকে সম্পূর্ণরূপে বিপরীত করে দেয়। ['আপেল', 'কমলা', 'কলা'] → ['কলা', 'কমলা', 'আপেল']।
['Apple', 'Banana', 'Orange']
✗ ভুল! এটি একটি সাজানো অ্যারে (বর্ণানুক্রমিক), কিন্তু বিপরীত() বিপরীত ক্রম প্রদান করে।
['Orange', 'Apple', 'Banana']
✗ ভুল! এটি একটি এলোমেলো পুনর্বিন্যাস। বিপরীত() ফলাফল হবে ['কলা', 'কমলা', 'আপেল']।