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