JavaScript 数组排序

sort() একটি একাডেমিক সমস্যা সমাধান হল একটি অত্যন্ত শক্তিশালী এক্সেস পদ্ধতি:

এক্সেস করা পদ্ধতি একটি একাডেমিক সমস্যা সমাধান:

sort() শব্দক্রমে আক্সেস করা পদ্ধতি একটি একাডেমিক সমস্যা সমাধান:

ইনস্ট্যান্স

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();            // fruits-এর এলিমেন্টস সাজানো

আপনার হাতে পরীক্ষা করুন

এলিমেন্টস ক্রমবর্ধমান ক্রমানুসারে সাজানো

reverse() এই মেথড অর্থেক্ষক এলিমেন্টস ক্রমবর্ধমান ক্রমানুসারে সাজানো করে。

আপনি এটা ব্যবহার করে অর্থেক্ষক ক্রমানুসারে সাজানো করতে পারেন:

ইনস্ট্যান্স

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();            // fruits-এর এলিমেন্টস সাজানো
fruits.reverse();         // এলিমেন্টস ক্রমবর্ধমান ক্রমানুসারে সাজানো

আপনার হাতে পরীক্ষা করুন

সংখ্যা সাজানো

ডিফল্টভাবেsort() ফাংশন অনুযায়ীঅক্ষরক্রমানুসারে মূল্যকে সাজায়。

এই ফাংশন অক্ষরের জন্য যথেষ্ট ভালো ("Apple" "Banana"-র আগে থাকবে)。

কিন্তু, যদি সংখ্যা অক্ষরের মাধ্যমে সাজানো হয়, তবে "25" "100"-কে বড় বলে গণ্য করা হবে, কারণ "2" "1"-কে বড় বলা হয়。

এইভাবেsort() মেথড 40-100 গণনা করে, -60 (নেতিবাচক মূল্য) ফিরিয়ে দেয়。

আমরা একটিক্রমপর্যায় ফাংশনএই সমস্যা সমাধান করুন:

ইনস্ট্যান্স

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

আপনার হাতে পরীক্ষা করুন

একই পদ্ধতিতে অর্থেক্ষক ক্রমানুসারে সাজানো করুন:

ইনস্ট্যান্স

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

আপনার হাতে পরীক্ষা করুন

ক্রমপর্যায় ফাংশন

কম্পারেটর ফাংশনের উদ্দেশ্য হল একটি অপর ক্রমানুসার নির্ধারণ করা。

কম্পারেটর ফাংশন একটি নেতিবাচক, শূন্য বা নেতিবাচক মূল্য ফিরিয়ে দিতে হবে, এটা প্রতিকূলক ভাবে নির্ধারিত হয়:

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

যখন sort() ফাংশন দুটি মূল্য কম্পারেটর ফাংশনে পাঠায়, এবং ফিরিয়ে পাওয়া মূল্যের ভিত্তিতে মূল্যকে সাজায়。

উদাহরণ:

যখন 40 ও 100 কম্পারেট করা হয় তখন,sort() এই মেথড 40, 100 কম্পারেটর ফাংশন ডাক করে。

এই ফাংশন 40-100 গণনা করে, -60 (নেতিবাচক মূল্য) ফিরিয়ে দেয়。

সাজানো ফাংশন 40-100 গণনা করে, -60 (নেতিবাচক মূল্য) ফিরিয়ে দেয়。

আপনি নিচের কোড টুকুম ব্যবহার করে সংখ্যা ও অক্ষরের ক্রমানুসারে সাজানো পরীক্ষা করতে পারেন:

<button onclick="myFunction1()">অক্ষরত্তুক ক্রমানুসারে সাজানো</button>
<button onclick="myFunction2()">সংখ্যাত্তুক ক্রমানুসারে সাজানো</button>
<p id="demo"></p>
<script>
var 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>

আপনার হাতে পরীক্ষা করুন

以随机顺序排序数组

ইনস্ট্যান্স

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

আপনার হাতে পরীক্ষা করুন

查找最高(或最低)的数组值

JavaScript 不提供查找数组中最大或最小数组值的内建函数。

不过,在对数组进行排序之后,您能够使用索引来获得最高或最低值。

升序排序:

ইনস্ট্যান্স

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});
// 现在 points[0] 包含最低值
// 而 points[points.length-1] 包含最高值

আপনার হাতে পরীক্ষা করুন

降序排序:

ইনস্ট্যান্স

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});
// 现在 points[0] 包含最高值
// 而 points[points.length-1] 包含最低值

আপনার হাতে পরীক্ষা করুন

যদি আপনি শুধুমাত্র সর্বশীর্ষ বা সর্বনিম্ন মান খুঁজুন, তবে সমগ্র আইন্দ্রনমা সারিবার করা দ্রুততর পদ্ধতি নয়。

Math.max()

আপনি এটা ব্যবহার করতে পারেন: Math.max.apply একটি আইন্দ্রনমা খুঁজুন:

ইনস্ট্যান্স

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

আপনার হাতে পরীক্ষা করুন

Math.max.apply([1, 2, 3]) সমান Math.max(1, 2, 3)

Math.min()

আপনি এটা ব্যবহার করতে পারেন: Math.min.apply একটি আইন্দ্রনমা খুঁজুন:

ইনস্ট্যান্স

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

আপনার হাতে পরীক্ষা করুন

Math.min.apply([1, 2, 3]) সমান Math.min(1, 2, 3)

আমার Min / Max JavaScript পদ্ধতি

সর্বশীর্ষ সমাধানকে ‘স্বনির্মিত’ পদ্ধতি ব্যবহার করা হয়。

এই ফাংশন একটি আইন্দ্রনমা চলে, যার মাধ্যমে একটি সর্বশীর্ষ মান পাওয়া যায় এবং প্রত্যেক মানকে তার সঙ্গে তুলনা করা হয়:

একটি উদাহরণ (ম্যাক্স খুঁজুন)

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

আপনার হাতে পরীক্ষা করুন

এই ফাংশন একটি আইন্দ্রনমা চলে, যার মাধ্যমে একটি সর্বনিম্ন মান পাওয়া যায় এবং প্রত্যেক মানকে তার সঙ্গে তুলনা করা হয়:

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

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

আপনার হাতে পরীক্ষা করুন

সার্চ ওয়ার্ড

JavaScript আইন্টারভেল সার্চ

ইনস্ট্যান্স

var 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){
	  var x = a.type.toLowerCase();
	  var y = b.type.toLowerCase();
	  if (x < y) {return -1;}
	  if (x > y) {return 1;}
	  return 0;
});

আপনার হাতে পরীক্ষা করুন