मान लीजिए कि हमारे पास इस तरह की वस्तुओं की एक सरणी है -
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 }
]