संक्षिप्त जवाब
new Map([...map].sort((a, b) =>
))
उदाहरण के लिए, मूल्य तार की तुलना करना, जो बराबर हो सकता है, हम एक प्रकार का फ़ंक्शन पास करते हैं जो [1] तक पहुंचता है और इसमें एक समान स्थिति होती है जो 0 देता है:
new Map([...map].sort((a, b) => (a[1] > b[1] && 1) || (a[1] === b[1] ? 0 : -1)))
प्रमुख तारों की तुलना करना, जो समान नहीं हो सकते हैं (समान स्ट्रिंग कुंजी एक दूसरे को अधिलेखित कर देंगे), हम बराबर स्थिति को छोड़ सकते हैं। हालाँकि, हमें अभी भी स्पष्ट रूप से -1 लौटाना चाहिए, क्योंकि एक आलसी को a[0] > b[0]
गलत तरीके से लौटाने से गलत (0 के बराबर माना जाता है), जब a[0] < b[0]
:
new Map([...map].sort((a, b) => a[0] > b[0] ? 1 : -1))
उदाहरणों के साथ विस्तार से
.entries()
में[...map.entries()]
(कई जवाब में सुझाव दिया) शायद मानचित्र जब तक जे एस इंजन अनुकूलन है कि दूर आप के लिए की एक अतिरिक्त यात्रा जोड़ने बेमानी है।
सरल परीक्षण के मामले में, आप वह कर सकते हैं जो प्रश्न के साथ पूछता है:
new Map([...map].sort())
... जो, अगर चाबियाँ सभी तार हैं, तो स्क्वास्ड और ज़बरदस्त अल्पविराम से जुड़े की-वैल्यू स्ट्रिंग्स जैसे '2-1,foo'
और'0-1,[object Object]'
, नए सम्मिलन आदेश के साथ एक नया मानचित्र लौटाएं:
नोट: यदि आप केवल {}
SO के कंसोल आउटपुट में देखते हैं , तो अपने वास्तविक ब्राउज़र कंसोल में देखें
const map = new Map([
['2-1', 'foo'],
['0-1', { bar: 'bar' }],
['3-5', () => 'fuz'],
['3-2', [ 'baz' ]]
])
console.log(new Map([...map].sort()))
फिर भी , इस तरह जबरदस्ती और कड़ेपन पर भरोसा करना एक अच्छा अभ्यास नहीं है। आपको आश्चर्य हो सकता है जैसे:
const map = new Map([
['2', '3,buh?'],
['2,1', 'foo'],
['0,1', { bar: 'bar' }],
['3,5', () => 'fuz'],
['3,2', [ 'baz' ]],
])
console.log('Buh?', new Map([...map].sort()))
for (const iteration of map) {
console.log(iteration.toString())
}
इस तरह कीड़े वास्तव में डिबग करने के लिए कठिन हैं - यह जोखिम नहीं है!
यदि आप कुंजियों या मानों को क्रमबद्ध करना चाहते हैं, तो उन्हें इस तरह स्पष्ट रूप से a[0]
और b[0]
सॉर्ट फ़ंक्शन में एक्सेस करना सबसे अच्छा है । ध्यान दें कि हम वापस आ जाएगी -1
और 1
पहले के लिए और बाद में, नहीं false
या 0
के रूप में कच्चे साथ a[0] > b[0]
क्योंकि कि बराबरी के रूप में व्यवहार किया जाता है:
const map = new Map([
['2,1', 'this is overwritten'],
['2,1', '0,1'],
['0,1', '2,1'],
['2,2', '3,5'],
['3,5', '2,1'],
['2', ',9,9']
])
const sortStringKeys = (a, b) => a[0] > b[0] ? 1 : -1
const sortStringValues = (a, b) => (a[1] > b[1] && 1) || (a[1] === b[1] ? 0 : -1)
console.log('By keys:', new Map([...map].sort(sortStringKeys)))
console.log('By values:', new Map([...map].sort(sortStringValues)))