2016-02-11 8 views
31

चलें कहते हैं कि मैं निम्नलिखित नक्शा है:मानचित्र कुंजी को सरणी में कैसे परिवर्तित करें?

let myMap = new Map().set('a', 1).set('b', 2); 

और मैं प्राप्त करने के लिए [ 'एक', 'बी'] उपरोक्त के आधार पर चाहते हैं। मेरा वर्तमान समाधान इतना लंबा और भयानक लगता है।

let myMap = new Map().set('a', 1).set('b', 2); 
let keys = []; 
for (let key of myMap) 
    keys.push(key); 
console.log(keys); 

एक बेहतर तरीका होना चाहिए, नहीं?

+6

शायद 'Array.from (Map.keys())'। –

+0

http://stackoverflow.com/questions/8763125/get-array-of-objects-keys –

+3

@gK। यह 'मानचित्र' के साथ काम नहीं करता है। – pawel

उत्तर

76

Map.keys() रिटर्न एक MapIterator वस्तु जो Array में बदला जा सकता Array.from का उपयोग कर:

let keys = Array.from(myMap.keys()); 
// ["a", "b"] 

संपादित करें: आप भी spread syntax

let keys =[ ...myMap.keys() ]; 
// ["a", "b"] 
+4

मुझे स्प्रेड ऑपरेटर के उपयोग को पसंद है, हालांकि, मेरा टाइपस्क्रिप्ट ट्रांसपेलर 'this.map.values ​​() फेंकता है। स्लाइस एक फ़ंक्शन नहीं है। शायद मुझे अद्यतन करना चाहिए। – Cody

+1

@ कोडी ऐसा इसलिए है क्योंकि आपका 'स्लाइस() 'आमंत्रण फैलाने वाले ऑपरेटर से पहले निष्पादित किया जा रहा है। कोशिश करें '[... Array.from (map.values ​​())। टुकड़ा (0)] ' – mgthomas99

0

का उपयोग कर सरणी iterable वस्तु में बदल सकते हैं आप प्रसार ऑपरेटर का उपयोग कर सकते हैं Map.keys() एरे में इटरेटर कनवर्ट करने के लिए।

let myMap = new Map().set('a', 1).set('b', 2).set(983, true) 
 
let keys = [...myMap.keys()] 
 
console.log(keys)

संबंधित मुद्दे

 संबंधित मुद्दे