मान लीजिए, हमारे पास ऑब्जेक्ट्स की एक सरणी है जैसे −
const arr = [ { id: 1, score: 1, isCut: false, dnf: false }, { id: 2, score: 2, isCut: false, dnf: false }, { id: 3, score: 3, isCut: false, dnf: false }, { id: 4, score: 4, isCut: false, dnf: false }, { id: 5, score: 5, isCut: true, dnf: true }, { id: 6, score: 6, isCut: true, dnf: false }, { id: 7, score: 7, isCut: true, dnf: false }, { id: 8, score: 8, isCut: true, dnf: false }, { id: 9, score: 9, isCut: true, dnf: false }, { id: 10, score: 0, isCut: false, dnf: false }, { id: 11, score: -1, isCut: false, dnf: false }, { id: 12, score: -2, isCut: false, dnf: true }, { id: 13, score: -3, isCut: false, dnf: false }, { id: 14, score: -4, isCut: false, dnf: false }, { id: 15, score: -5, isCut: false, dnf: false }, { id: 16, score: 10, isCut: true, dnf: false } ];हमें उपरोक्त सरणी को निम्नलिखित मानदंडों पर सॉर्ट करना आवश्यक है −
यदि dnf true है,
ऑब्जेक्ट नीचे जाए; सभी dnf-ऑब्जेक्ट्स को स्कोर द्वारा सॉर्ट किया जाना चाहिए
यदि isCut true है,
ऑब्जेक्ट नीचे जाए, लेकिन dnf से ऊपर; सभी isCut-ऑब्जेक्ट्स को स्कोर द्वारा सॉर्ट किया जाना चाहिए
बाकी को स्कोर द्वारा सॉर्ट किया जाना चाहिए, और यदि स्कोर समान हैं, तो id द्वारा
उदाहरण
इसके लिए कोड होगा −
const arr = [ { id: 1, score: 1, isCut: false, dnf: false }, { id: 2, score: 2, isCut: false, dnf: false }, { id: 3, score: 3, isCut: false, dnf: false }, { id: 4, score: 4, isCut: false, dnf: false }, { id: 5, score: 5, isCut: true, dnf: true }, { id: 6, score: 6, isCut: true, dnf: false }, { id: 7, score: 7, isCut: true, dnf: false }, { id: 8, score: 8, isCut: true, dnf: false }, { id: 9, score: 9, isCut: true, dnf: false }, { id: 10, score: 0, isCut: false, dnf: false }, { id: 11, score: -1, isCut: false, dnf: false }, { id: 12, score: -2, isCut: false, dnf: true }, { id: 13, score: -3, isCut: false, dnf: false }, { id: 14, score: -4, isCut: false, dnf: false }, { id: 15, score: -5, isCut: false, dnf: false }, { id: 16, score: 10, isCut: true, dnf: false } ]; const sortComplex = (arr = []) => { arr.sort(function (a, b) { const order = (dnf, isCut) => { return [0, 1, 3, 2][dnf * 2 + isCut]; } return order(a.dnf, a.isCut) - order(b.dnf, b.isCut) || b.score - a.score; }); }; sortComplex(arr); console.log(arr);आउटपुट
और कंसोल में आउटपुट होगा −
[ { id: 4, score: 4, isCut: false, dnf: false }, { id: 3, score: 3, isCut: false, dnf: false }, { id: 2, score: 2, isCut: false, dnf: false }, { id: 1, score: 1, isCut: false, dnf: false }, { id: 10, score: 0, isCut: false, dnf: false }, { id: 11, score: -1, isCut: false, dnf: false }, { id: 13, score: -3, isCut: false, dnf: false }, { id: 14, score: -4, isCut: false, dnf: false }, { id: 15, score: -5, isCut: false, dnf: false }, { id: 16, score: 10, isCut: true, dnf: false }, { id: 9, score: 9, isCut: true, dnf: false }, { id: 8, score: 8, isCut: true, dnf: false }, { id: 7, score: 7, isCut: true, dnf: false }, { id: 6, score: 6, isCut: true, dnf: false }, { id: 5, score: 5, isCut: true, dnf: true }, { id: 12, score: -2, isCut: false, dnf: true } ]