চাবিকাঠি সংগ্রহ

আপনি কী-মান জোড়া সঞ্চয় করতে অবজেক্ট লিটারেল এবং মানগুলির পুনরাবৃত্তিযোগ্য সংগ্রহগুলি সংরক্ষণ করতে অ্যারে ব্যবহার করতে পারেন। আরও দানাদার ব্যবহারের ক্ষেত্রে ES6 বিশেষায়িত ডেটা স্ট্রাকচারও প্রবর্তন করে: কী-মান জোড়ার জন্য মানচিত্র, এবং পৃথক মানের জন্য সেট করুন।

মানচিত্র

একটি মানচিত্র হল একটি পুনরাবৃত্ত ডেটা স্ট্রাকচার যা একটি অবজেক্ট লিটারেলের মতো কী-মানের জোড়া হিসাবে তথ্য সংরক্ষণ করে। অবজেক্ট লিটারালের বিপরীতে, একটি মানচিত্র উভয় মান এবং কী উভয়কে যেকোন ডেটা টাইপ থাকতে দেয় এবং ম্যাপে যোগ করা ক্রম উপাদানগুলি এটির উপর পুনরাবৃত্তি করার সময় সংরক্ষিত হয়।

একটি মানচিত্র তৈরি করতে, Map() কনস্ট্রাক্টর ব্যবহার করুন:

const myMap = new Map();

myMap;
> Map(0)

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

const myMap = new Map([
    [ "myKey", "A string value" ],
    [ "mySecondKey", 500 ],
    [ "myThirdKey", true ]
]);

myMap;
> Map(3) {'myKey' => 'A string value', 'mySecondKey' => 500, 'myThirdKey' => true}

আবার, একটি মানচিত্র বস্তু আক্ষরিক বস্তুর থেকে পৃথক যে মান এবং কী উভয়ই যেকোন ডেটা প্রকার এবং মান নিতে পারে:

const notAFunction = () => console.log( "function" );
const myMap = new Map([
  [ null, 0 ],
  [ false, "This is false" ],
  [ undefined, "No defined value" ],
  [ NaN, "Not a number" ]
]);

myMap;
> Map(4) {null => 0, false => 'This is false', undefined => 'No defined value', NaN => 'Not a number'}

মানচিত্র উপাদানগুলি পেতে, সেট করতে বা মুছতে, Map নির্মাণকারী থেকে উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতিগুলি ব্যবহার করুন:

const myMap = new Map();

myMap;
> Map(0)

myMap.set( "myKey", "My value." );

myMap.has( "myKey" );
> true

myMap.get( "myKey" );
"My value."

myMap.delete( "myKey" );

myMap;
> Map(0)

একটি মানচিত্রে কীগুলি অনন্য, যার অর্থ হল একটি অভিন্ন কী সেট করা পূর্বে সংরক্ষিত কী-মান জোড়াকে ওভাররাইট করে:

const myMap = new Map([ [ "myKey", "A string value" ] ]);

myMap.set( "myKey", 500 );

myMap;
> Map(1) {'myKey' => 500}

অবজেক্টের মতো, আপনি const সহ ঘোষিত একটি ভেরিয়েবলে একটি মানচিত্র বরাদ্দ করতে পারেন এবং তারপর সেই মানচিত্রটি সংশোধন করতে পারেন। যাইহোক, const এর অন্যান্য ব্যবহারের ক্ষেত্রে, আপনি পরিবর্তনশীলটি নিজেই পরিবর্তন করতে বা মুছতে পারবেন না:

const myMap = new Map();
myMap.set( "myKey", "A string value" );

myMap;
> Map(1) {'myKey' => 500}

দুর্বলম্যাপ

একটি WeakMap হল এমন একটি মানচিত্র যা "দুর্বল" রেফারেন্স ধারণ করে, যা অবশ্যই এমন বস্তু বা প্রতীকগুলির উল্লেখ হতে হবে যা বিশ্বব্যাপী প্রতীক রেজিস্ট্রিতে যোগ করা হয়নি।

একটি WeakMap তৈরি করতে, WeakMap() কনস্ট্রাক্টর ব্যবহার করুন:

const myWeakMap = new WeakMap();

myWeakMap;
> WeakMap(0)

WeakMap সিনট্যাক্স মানচিত্রের অনুরূপ, কিন্তু WeakMaps পুনরাবৃত্তিযোগ্য নয়, এবং একটি কী হিসাবে একটি বস্তু বা প্রতীক ছাড়া অন্য কোনো মান ব্যবহার করার চেষ্টা করার ফলে একটি সিনট্যাক্স ত্রুটি সৃষ্টি হয়। যখন WeakMap-এর বাইরে কোনো কী-এর কোনো উল্লেখ থাকে না, তখন সেই বস্তু বা প্রতীক এবং WeakMap-এ সংশ্লিষ্ট মান উভয়ই আবর্জনা সংগ্রহের জন্য যোগ্য।

এটি একটি WeakMap-এ বস্তুর সাথে সম্পর্কিত মেটাডেটা সংরক্ষণ করার মতো ক্ষেত্রে ব্যবহার করার অনুমতি দেয়, কী হিসাবে বস্তুর রেফারেন্স ব্যবহার করে। যদি এই অবজেক্টে অন্য কোন রেফারেন্স না থাকে, এবং অবজেক্টটি মেমরি থেকে মুছে ফেলা হয়, তাহলে সংশ্লিষ্ট মেটাডেটাও মুছে ফেলা হয়।

সেট

একটি সেট হল অনন্য মানের একটি পুনরাবৃত্তিযোগ্য সংগ্রহ যা একটি অ্যারের সাথে কিছুটা অনুরূপ, যদিও একটি সেট শুধুমাত্র অনন্য মান ধারণ করতে পারে। একটি মানচিত্রের মতো, একটি সেটের উপর পুনরাবৃত্তি করা এতে ক্রম উপাদানগুলিকে সংরক্ষিত করে।

একটি সেট তৈরি করতে, Set() কনস্ট্রাক্টর ব্যবহার করুন:

const mySet = new Set();

mySet;
> Set []

আপনি একটি অ্যারে আক্ষরিক থেকে একটি সেট তৈরি করতে পারেন:

const mySet = new Set([ 1, 2, 3 ]);

mySet;
> Set(3) [ 1, 2, 3 ]

যেহেতু একটি সেট ডুপ্লিকেট উপাদানগুলিকে অনুমতি দেয় না, যখন একই মানের একাধিক দৃষ্টান্ত ধারণকারী একটি অ্যারে থেকে একটি সেট তৈরি করা হয়, তখন এটি শুধুমাত্র সেই মানের প্রথম দৃষ্টান্ত বজায় রাখে:

const mySet = new Set([ 1, 2, 3, 2 ]);

mySet;
> Set(3) [ 1, 2, 3 ]

একটি সেট থেকে উপাদান যোগ করতে বা অপসারণ করতে, Set কনস্ট্রাক্টর থেকে উত্তরাধিকারসূত্রে প্রাপ্ত পদ্ধতিগুলি ব্যবহার করুন। এই পদ্ধতিগুলি একটি সূচী উল্লেখ করার পরিবর্তে, উপাদানের মানের উপর ভিত্তি করে একটি উপাদানের উপর কাজ করে:

const mySet = new Set();

mySet.add( "My value." );

mySet;
> Set [ "My value." ]

mySet.has( "My value." );
> true

mySet.delete( "My value." );

mySet;
> Set []

যদিও সেটগুলি সূচীকৃত সংগ্রহ নয়, এবং সেগুলি এইভাবে ব্যবহার করার উদ্দেশ্যে নয়, একটি সেটের উপাদানগুলি সন্নিবেশের ক্রম অনুসারে পুনরাবৃত্তি করা হয়। একটি সেটে একটি ডুপ্লিকেট উপাদান মান যোগ করার প্রচেষ্টা এড়িয়ে গেছে, মূল সন্নিবেশ ক্রম সংরক্ষণ করে:

const mySet = new Set([ 1, 2, 3 ]);

mySet;
> Set(3) [ 1, 2, 3 ]

mySet.add( 2 );
> Set(3) [ 1, 2, 3 ]

একটি সেট থেকে একটি অ্যারে তৈরি করতে, হয় Array.from() পদ্ধতি বা স্প্রেড সিনট্যাক্স ব্যবহার করুন:

const mySet = new Set([ 1, 2, 3 ]);
const myArray = Array.from( mySet );

myArray;
> Array(3) [ 1, 2, 3 ]

[ ...mySet ];
> Array(3) [ 1, 2, 3 ]

দুর্বল সেট

WeakSet হল এমন একটি সেট যাতে শুধুমাত্র আবর্জনা-সংগ্রহযোগ্য মান থাকে, যেমন অবজেক্টের রেফারেন্স, বা চিহ্ন যা গ্লোবাল সিম্বল রেজিস্ট্রিতে যোগ করা হয়নি।

একটি WeakSet তৈরি করতে, WeakSet() কনস্ট্রাক্টর ব্যবহার করুন:

const myWeakSet = new WeakSet();

myWeakSet;
> WeakSet []

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

এটি সম্পর্কিত বস্তুর একটি একক, পুনরাবৃত্তিযোগ্য সংগ্রহের মতো ব্যবহারের ক্ষেত্রে অনুমতি দেয়। যদি WeakSet দ্বারা উল্লেখ করা কোনো বস্তুর অন্য কোনো রেফারেন্স না থাকে, তাহলে সংশ্লিষ্ট উপাদানটি WeakSet থেকেও সরানো হয়।

আপনার উপলব্ধি পরীক্ষা করুন

নিম্নলিখিত দেওয়া:

        const myMap = new Map([ [ "myKey", "My string" ] ]);
        myMap.set( "myKey", 100 );
      

myMap কি ফেরত দেয়?

100
"My string"
undefined