কীভাবে অ্যারে মানচিত্র কী রূপান্তর করবেন?


236

আমাকে নীচের মানচিত্র রয়েছে বলে দিন:

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

এবং আমি উপরের ভিত্তিতে ['a', 'b'] পেতে চাই। আমার বর্তমান সমাধানটি এত দীর্ঘ এবং ভয়াবহ বলে মনে হচ্ছে।

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

আরও ভাল উপায় আছে, না?


17
সম্ভবত Array.from(Map.keys())
ড্যান ডি


5
@gK। এটি দিয়ে কাজ করে না Map
পাওয়েল

ওপরে দুঃখিত!
হামনিক্স

Array.from(Map.values())- যদি ক্ষেত্রে হয় তবে আপনার কীগুলির পরিবর্তে মানগুলি দরকার।
মনোহর রেড্ডি পোরেডি

উত্তর:


435

Map.keys()এমন একটি MapIteratorবস্তু প্রদান করে যা Arrayব্যবহার করে রূপান্তর করা যায় Array.from:

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

সম্পাদনা: আপনি স্প্রেড সিনট্যাক্স ব্যবহার করে পুনরাবৃত্তিযোগ্য বস্তুকে অ্যারেতে রূপান্তর করতে পারেন

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

6
আমি স্প্রেড অপারেটরের ব্যবহার পছন্দ করি, যদিও আমার টাইপস্ক্রিপ্ট ট্রান্সপেলার নিক্ষেপ করে this.map.values().slice is not a function। আমার আপডেট করা উচিত।
কোডি

4
@ কোডি কারণ এই যে slice()স্প্রেড অপারেটরের আগে আপনার অনুরোধ কার্যকর করা হচ্ছে। চেষ্টা করুন[ ... Array.from(map.values()).slice(0) ]
এমজিথোমাস99

5
const fooMap = new Map<number, string>(); const fooArray = [...fooMap.keys()];টাইপস্ক্রিপ্ট ২.7.২ এটির জন্য বলেছেন: নিম্নলিখিতটি: TS2461: টাইপ করুন 'IterableIterator <number>' অ্যারে টাইপ নয়। সুতরাং এটি টাইপস্ক্রিপ্টে অনুমোদিত নয়। অ্যারে.ফ্রম প্রত্যাশার মতো কাজ করে।
স্টিফান রেইন

@ স্টেফানরেইন টাইপসক্রিপ্ট স্প্রেড অপারেটর দেখতে একই রকম, তবে এটি ES6 স্প্রেডের সমতুল্য নয়, কারণ এটি কেবল অ্যারে এবং অবজেক্টের ধরণের ক্ষেত্রেই কাজ করে, যেখানে ES6 কোনও পুনরাবৃত্তির সাথে কাজ করে। আপনি উদাহরণস্বরূপ ES6 ..."abc"পেতে ["a","b","c"]যা করতে পারেন যা টিএসে সম্ভব নয়।
পাভেল

@ পাওয়েল ..."abc"বা ...("abc")ক্রোম কনসোলটিতে কাজ করছে না, যা ইএস 6 সমর্থন করে?
স্টিফান রেইন

15

আপনি একটি অ্যারেতে মানচিত্র.কিজ () পুনরুক্তি করে রূপান্তর করতে স্প্রেড অপারেটরটি ব্যবহার করতে পারেন ।

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


6

Array.from(myMap.keys()) গুগল অ্যাপ্লিকেশন স্ক্রিপ্টগুলিতে কাজ করে না।

এটি ব্যবহারের চেষ্টা করার ফলে ত্রুটি হয় TypeError: Cannot find function from in object function Array() { [native code for Array.Array, arity=1] }

জিএএস-তে কীগুলির একটি তালিকা পেতে এটি করুন:

var keysList = Object.keys(myMap);

এটি আমার পক্ষে কাজ করে, এবং প্রথম উত্তরটি দেয় নি। আমি গুগল ব্যবহার করছি না ... তবে map.keys()ফেরতের মানটি পুনরাবৃত্তিযোগ্য নয় বলে ত্রুটি পেতে থাকে ।
আজুরস্পট

5

আমার কৌণিক প্রতিক্রিয়াশীল ফর্মের সাথে সামঞ্জস্যপূর্ণ কিছু দরকার:

let myMap = new Map().set(0, {status: 'VALID'}).set(1, {status: 'INVALID'});
let mapToArray = Array.from(myMap.values());
let isValid = mapToArray.every(x => x.status === 'VALID');

2

প্রশ্নের যথাযথ উত্তরের উত্তর নয় তবে new Array(...someMap)প্রয়োজনীয় কৌশলগুলি উত্পন্ন করার জন্য যখন কী এবং মান উভয়ই দরকার হয় তখন এই কৌশলটি আমাকে কয়েকবার বাঁচিয়েছিল। উদাহরণস্বরূপ যখন উভয় কী এবং মান মানের উপর ভিত্তি করে মানচিত্র অবজেক্ট থেকে প্রতিক্রিয়া উপাদান তৈরি করার প্রয়োজন হয়।

  let map = new Map();
  map.set("1", 1);
  map.set("2", 2);
  console.log(new Array(...map).map(pairs => pairs[0])); -> ["1", "2"]

1

ঠিক আছে, আসুন আমরা আরও বিস্তৃত হয়ে যাই এবং যাঁরা জাভাস্ক্রিপ্টে এই বৈশিষ্ট্যটি জানেন না তাদের জন্য কী মানচিত্রটি শুরু করুন ... এমডিএন বলেছেন:

মানচিত্র অবজেক্টটি কী-মান যুক্ত করে এবং কীগুলির মূল সন্নিবেশ ক্রমের কথা মনে করে।
যে কোনও মান (উভয় বস্তু এবং আদিম মান) একটি কী বা মান হিসাবে ব্যবহৃত হতে পারে।

যেমনটি আপনি উল্লেখ করেছেন, আপনি সহজেই নতুন কীওয়ার্ড ব্যবহার করে মানচিত্রের একটি উদাহরণ তৈরি করতে পারেন ... আপনার ক্ষেত্রে:

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

তো দেখা যাক ...

আপনি যেভাবে উল্লেখ করেছেন সেটি হ'ল একটি সঠিক উপায়, তবে হ্যাঁ, এটি করার আরও সংক্ষিপ্ত উপায় রয়েছে ...

মানচিত্রে অনেকগুলি পদ্ধতি রয়েছে যা আপনি ব্যবহার করতে পারেন, এর মতো set()আপনি ইতিমধ্যে কী মানগুলি নির্ধারণ করতে ব্যবহার করেছেন ...

তাদের মধ্যে একটি keys()যা সমস্ত কীগুলি ফেরত দেয় ...

আপনার ক্ষেত্রে, এটি ফিরে আসবে:

MapIterator {"a", "b"}

এবং আপনি এগুলিকে স্প্রেড অপারেটরের মতো ES6 উপায়ে সহজেই একটি অ্যারেতে রূপান্তর করতে পারেন ...

const b = [...myMap.keys()];
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.