প্রকাশিত

জাভাস্ক্রিপ্ট-এ হ্যাশ ম্যাপ: উচ্চ পারফর্মেন্সের কী-মান জোড়া

লেখকগণ

হ্যাশম্যাপ কেন?

আমরা সকলেই জানি যে অন্য প্রোগ্রামিং ভাষায় হ্যাশটেবল নামক কিছু আছে। এটি একটি ডেটা স্ট্রাকচার যা কী-মান জোড়া সংরক্ষণ করে, যা তাদের O(1) ধ্রুব সময় লুকআপের কারণে খুব ভালো। এটি একটি সুবিধাজনক ডেটা স্ট্রাকচার যা আমরা ডেটা সংরক্ষণের জন্য ব্যবহার করতে পারি। জাভাস্ক্রিপ্টে, আমাদের হ্যাশটেবলের মতো কোনও বিল্ট-ইন ডেটা স্ট্রাকচার নেই। তবে আমরা কী-মান জোড়া সংরক্ষণের জন্য অবজেক্ট ব্যবহার করতে পারি। জাভাস্ক্রিপ্টে এটিকে ম্যাপ বলা হয়।

ম্যাপ কী?

একটি ম্যাপ এমন উপাদানের সংগ্রহ যা প্রতিটি উপাদান কী, মান জোড়া হিসেবে সংরক্ষিত থাকে। একটি ম্যাপের কী এবং মান যেকোনও মান হতে পারে (অবজেক্ট এবং প্রাথমিক মান উভয়ই)। একটি ম্যাপ অবজেক্ট তার উপাদানগুলিকে ইনসার্ট করার ক্রম অনুসারে পুনরাবৃত্তি করে - একটি for...of লুপ প্রতিটি পুনরাবৃত্তির জন্য [কী, মান] এর একটি অ্যারে প্রদান করে।

একটি ম্যাপ কী-মান জোড়া রাখে যেখানে কী যেকোনও ডেটা টাইপ হতে পারে। একটি ম্যাপের একটি সম্পত্তি থাকে যা ম্যাপের আকার প্রতিনিধিত্ব করে। একটি ম্যাপ কীগুলির মূল ইনসার্ট করার ক্রম মনে রাখে।

ম্যাপ পদ্ধতি ও সম্পত্তি

পদ্ধতিবর্ণনা
new Map()একটি নতুন ম্যাপ অবজেক্ট তৈরি করে
set()একটি ম্যাপে একটি কীর জন্য মান সেট করে
get()একটি কীর জন্য মান ফেরত দেয়
has()একটি ম্যাপে একটি কী বিদ্যমান কিনা তা নির্দেশ করে একটি বুলিয়ান ফেরত দেয়
delete()একটি ম্যাপ থেকে একটি কী মুছে ফেলে
clear()একটি ম্যাপ থেকে সকল কী মুছে ফেলে
values()একটি ম্যাপের মানের একটি পুনরাবৃত্তি অবজেক্ট ফেরত দেয়
keys()একটি ম্যাপের কীর একটি পুনরাবৃত্তি অবজেক্ট ফেরত দেয়
entries()একটি ম্যাপের কী-মান জোড়ার একটি পুনরাবৃত্তি অবজেক্ট ফেরত দেয়
forEach()একটি ম্যাপের প্রতিটি কী-মান জোড়ার জন্য একবার প্রদত্ত ফাংশন নির্বাহ করে
সম্পত্তিবর্ণনা
sizeএকটি ম্যাপে কী/মান জোড়ার সংখ্যা ফেরত দেয়

ম্যাপ উদাহরণ

const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])

console.log(map.get('name')) // John
console.log(map.get('age')) // 30
console.log(map.get('isMarried')) // true
console.log(map.get('address')) // {city: 'New York', state: 'NY'}
console.log(map.get('hobbies')) // ['reading', 'writing', 'coding']

console.log(map.size) // 5

ম্যাপ পুনরাবৃত্তি

const map = new Map()
map.set('name', 'John')
map.set('age', 30)
map.set('isMarried', true)
map.set('address', { city: 'New York', state: 'NY' })
map.set('hobbies', ['reading', 'writing', 'coding'])

// কীগুলিতে পুনরাবৃত্তি করুন
for (const key of map.keys()) {
  console.log(key)
}

// মানগুলিতে পুনরাবৃত্তি করুন
for (const value of map.values()) {
  console.log(value)
}

// কী-মান জোড়ায় পুনরাবৃত্তি করুন
for (const [key, value] of map.entries()) {
  console.log(key, value)
}

// কী-মান জোড়ায় পুনরাবৃত্তি করুন
map.forEach((value, key) => {
  console.log(key, value)
})

ম্যাপ বনাম অবজেক্ট

ম্যাপঅবজেক্ট
ম্যাপ হল কীযুক্ত ডেটা আইটেমের একটি সংগ্রহ, যেমন একটি অবজেক্ট। তবে প্রধান পার্থক্য হল ম্যাপ যেকোনও ধরণের কী অনুমোদন করে।অবজেক্ট কী হিসেবে হয় স্ট্রিং অথবা প্রতীক।
ম্যাপ পুনরাবৃত্তিযোগ্য এবং সহজেই লুপ করা যায়।অবজেক্ট পুনরাবৃত্তিযোগ্য নয় এবং সহজেই লুপ করা যায় না।
ম্যাপের একটি বিল্ট-ইন forEach পদ্ধতি আছে, তাই এটিকে একটি অ্যারেতে রূপান্তর করার প্রয়োজন নেই।অবজেক্টের কোনও বিল্ট-ইন forEach পদ্ধতি নেই।
ম্যাপের একটি size সম্পত্তি আছে, তাই আমরা সহজেই আইটেমের সংখ্যা পেতে পারি।অবজেক্টের কোনও size সম্পত্তি নেই।
ম্যাপ অবজেক্টগুলিকে কী হিসেবে ব্যবহার করতে পারে।অবজেক্ট অবজেক্টগুলিকে কী হিসেবে ব্যবহার করতে পারে না।
ম্যাপ সাধারণত অবজেক্টের চেয়ে দ্রুত।অবজেক্ট সাধারণত ম্যাপের চেয়ে ধীর।

উপসংহার

এই নিবন্ধে, আমরা জাভাস্ক্রিপ্টে ম্যাপ সম্পর্কে জেনেছি। আমরা ম্যাপ পদ্ধতি ও সম্পত্তি সম্পর্কে জেনেছি। আমরা ম্যাপ ও অবজেক্টের পার্থক্য সম্পর্কেও জেনেছি। আশা করি আপনি এই নিবন্ধটি উপভোগ করেছেন। আপনার যদি কোনও প্রশ্ন থাকে, তাহলে নিচে একটি মন্তব্য করুন। পড়ার জন্য ধন্যবাদ।

মূলত প্রকাশিত: https://blog.imam.dev/blog/javascript-hashmap

রেফারেন্স

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

https://www.freecodecamp.org/news/what-is-a-javascript-map-what-are-the-differences-between-map-and-object-in-javascript/

https://www.geeksforgeeks.org/map-vs-object-javascript/