ধরুন আমাদের নিচের মত অবজেক্টের একটি অ্যারে আছে:
const arr = [
{flag: true, other: 1},
{flag: true, other: 2},
{flag: false, other: 3},
{flag: true, other: 4},
{flag: true, other: 5},
{flag: true, other: 6},
{flag: false, other: 7}
];
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা এমন একটি অ্যারে নেয় এবং নিচের শর্ত অনুযায়ী সাজাবে:
যদি arr.flag === false হয়, তবে মিলিত উপাদানটি অ্যারের শুরুতে চলে যাবে, কিন্তু আগের মিলিত উপাদানগুলোর পরে।
যে উপাদানগুলো মিলে না, সেগুলো আসল ক্রমেই থাকবে।
উপস্থিতির ক্রম গুরুত্বপূর্ণ।
উপরের অ্যারের জন্য আউটপুট হবে:
const output = [
{flag: false, other: 3},
{flag: false, other: 7},
{flag: true, other: 1},
{flag: true, other: 2},
{flag: true, other: 4},
{flag: true, other: 5},
{flag: true, other: 6}
];
উদাহরণ
কোড নিচে দেওয়া হলো:
const arr = [
{flag: true, other: 1},
{flag: true, other: 2},
{flag: false, other: 3},
{flag: true, other: 4},
{flag: true, other: 5},
{flag: true, other: 6},
{flag: false, other: 7}
];
const sortByFlag = arr => {
const sorter = (a, b) => {
if(!a['flag'] && b['flag']){
return -1;
};
if(a['flag'] && !b['flag']){
return 1;
}
return a['other'] - b['other'];
}
arr.sort(sorter);
};
sortByFlag(arr);
console.log(arr);
আউটপুট
কনসোলে আউটপুট:
[
{ flag: false, other: 3 },
{ flag: false, other: 7 },
{ flag: true, other: 1 },
{ flag: true, other: 2 },
{ flag: true, other: 4 },
{ flag: true, other: 5 },
{ flag: true, other: 6 }
]