ধরুন আমাদের কাছে এই ধরনের বস্তুর একটি অ্যারে আছে −
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 ===মিথ্যা হয়, তাহলে ম্যাচিং এলিমেন্টটি অ্যারেতে প্রথমে রাখা হবে, কিন্তু শুধুমাত্র পূর্ববর্তী ম্যাচিং এলিমেন্টের পরে।
-
যে উপাদানগুলি মেলে না, সেগুলি একই ক্রমে থাকে যা তারা প্রথমে ছিল৷
-
চেহারার ক্রম গুরুত্বপূর্ণ।
সুতরাং, উপরের অ্যারের জন্য, আউটপুট −
হওয়া উচিত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 } ]