করলে ইউজ Map Set থাকবে না রিগ্রেট
জাভাস্ক্রিপ্টে ডাটা স্টোরেজের জন্য আমরা ভেরিয়েবল ইউজ করি, অ্যারে, অবজেক্ট ইউজ করি। তবে এগুলার বাইরেও আরও কিছু স্পেশাল টাইপের ডাটা রাখার সিস্টেম আছে। সেগুলার মধ্যে একটা অন্যতম হচ্ছে Set।
অ্যারের মধ্যে আমরা চাইলে একই উপাদান একাধিকবার রাখতে পারি। সেখানে Set ব্যবহার করে ইউনিক ভ্যালু রাখতে পারবি। অর্থাৎ একই ভ্যালু একাধিকবার ঢোকালে সেটা একবারই থাকবে। একবারের বেশি আসবে না।
জাভাস্ক্রিপ্টে Set ডিক্লেয়ার করার জন্য সরাসরি একটা Array থেকে Set বানানো সহজ। জাস্ট প্রথমে new লিখবি, এরপর Set লিখে ব্র্যাকেটের ভিতরে একটা অ্যারে দিয়ে দিবি। নিচের মতো করে—
const mySet = new Set([1, 2, 3, 4, 5]);
console.log(mySet);
Output: Set { 1, 2, 3, 4, 5 }তুই যদি কোনো Array থেকে ডুপ্লিকেট বাদ দিতে চাস, তাও এক লাইনেই করা যায়।
const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = new Set(numbers);
console.log(uniqueNumbers);
Output: Set { 1, 2, 3, 4, 5 }আর যদি সেটকে ইউনিক ভ্যালুওয়ালা Array হিসেবে দেখতে চাস, তাহলে অ্যারেটাকে সেট বানাবি, আর তারপর সেই সেটকে অ্যারের ভিতরে স্প্রেড অপারেটর দিয়ে বিছিয়ে দিবি। এইটা জাস্ট দেখে রাখ—
const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueArray = [...new Set(numbers)];
console.log(uniqueArray);
Output: [1, 2, 3, 4, 5]আর অ্যারে থেকে set বানাতে না চাইলে সরাসরি খালি একটা সেট বানাতে পারবি। তারপর উপাদান যোগ করার জন্য set-এর নামের পরে ডট চিহ্ন দিয়ে add লিখবি। অনেকটা অ্যারের মধ্যে push করার মতো করেই। কাজটা করতে পারবি। আর add করতে গেলে কোনো উপাদান যদি আগে থেকেই সেটে থাকে, তাহলে সেই উপাদান কিন্তু যোগ হবে না। তাই নিচের সেটের মধ্যে দেখবি, 10-এর মান কিন্তু একবারই থাকবে।
const mySet = new Set();
mySet.add(10);
mySet.add(20);
mySet.add(10);
mySet.add(30);
console.log(mySet);
Output: Set { 10, 20, 30 }কোনো উপাদান সেটের মধ্যে আছে কি না, চেক করার জন্য সেটের নামের পর ডট চিহ্ন দিয়ে তারপর has লিখে ব্র্যাকেটের ভিতরে যে উপাদান আছে কি না, চেক করতে চাস, সেটা লিখে দিবি। আবার কোনো উপাদান বের করে দিতে চাইলে, ডিলিট করতে চাইলে সেটের নামের পর ডট চিহ্ন দিয়ে তারপর delete লিখে এরপর যে উপাদানকে রিমুভ করবি, সেটা লিখে দিবি।
console.log(mySet.has(20));
Output: true
mySet.delete(10);
console.log(mySet);
Output: Set { 20, 30 }Array vs Set
ডুপ্লিকেট ভ্যালু: Array ডুপ্লিকেট ভ্যালু রাখতে পারে, কিন্তু Set শুধু ইউনিক ভ্যালু রাখে।
অ্যাক্সেস পদ্ধতি: Array ইন্ডেক্সভিত্তিক অ্যাক্সেস সাপোর্ট করে, কিন্তু Set শুধু ভ্যালু দিয়ে কাজ করে।
ইফিশিয়েন্সি: বড় ডাটায় ডুপ্লিকেট চেক বা রিমুভ করার ক্ষেত্রে Set তুলনামূলক দ্রুত, যেখানে Array লুপের ওপর নির্ভরশীল।
Map
অবজেক্ট আমরা কি-ভ্যালু পেয়ার (key-value) স্টাইলে ডাটা রাখতে পারি। প্রত্যেকটা প্রোপার্টির মধ্যে একটা কি থাকে, একটা ভ্যালু থাকে। এই কাজটাই Map ব্যবহার করে key-value pair স্টাইলে ডাটা সংরক্ষণ করতে পারবি। তবে Map ইউজ করার কিছু বাড়তি সুবিধা আছে।
Map ডিক্লেয়ার করার পদ্ধতি
Map তৈরি করার জন্য new Map() ব্যবহার করবি। এরপর নতুন ডাটা যোগ করার জন্য .set() মেথড ব্যবহার করবি। নিচের মতো করে—
const myMap = new Map();
myMap.set("name", "Rahim");
myMap.set("age", 25);
console.log(myMap);
Output: Map { 'name' => 'Rahim', 'age' => 25 }Map-এর সুবিধা
যেকোনো ডাটা টাইপ key হিসেবে ব্যবহার করতে পারিস (যেমন: স্ট্রিং, নাম্বার, অবজেক্ট ইত্যাদি)।
.size দিয়ে সরাসরি Map-এর সাইজ পেতে পারিস। .get() মেথড ব্যবহার করে সহজেই কোনো key-এর value পেতে পারিস।
Practice:
- ডুপ্লিকেট বাদ দিয়ে একটা নতুন সেট তৈরি কর [1, 2, 2, 3, 4, 4, 5]।
- নতুন একটা সেট বানিয়ে সেখানে 10, 20, 10, 30 এই উপাদানগুলো যোগ কর। তারপর সেটটাকে কনসোলে দেখাও।
- Set { 10, 20, 30 } থেকে 10 উপাদানটি ডিলিট কর।
- Array-এর মধ্যে [1, 2, 3, 4, 2, 1, 5, 5] উপাদানগুলো নিয়ে সেট তৈরি কর এবং সেই সেটকে array-তে রূপান্তর কর।