मान लीजिए हमारे पास निम्नलिखित जैसी ऑब्जेक्ट्स की सरणी है:
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}
];
हमें एक JavaScript फ़ंक्शन लिखना है जो ऐसी सरणी लेता है और निम्नलिखित शर्तों के आधार पर सॉर्ट करता है:
- यदि 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 }
]