मान लीजिए हमारे पास ऑब्जेक्ट्स की एक सरणी इस तरह है:
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 } ]