প্রকাশিত

জাভাস্ক্রিপ্ট সেট: শুরুয়াती প্রোগ্রামারদের জন্য ভূমিকা

লেখকগণ

সেট কেন?

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

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

জাভাস্ক্রিপ্ট সেট কী?

সেট অবজেক্টগুলি মানগুলির সংগ্রহ। সেটের একটি মান কেবলমাত্র একবার ঘটতে পারে; এটি সেটের সংগ্রহে অনন্য। আপনি সেটের উপাদানগুলির মধ্য দিয়ে ইনসারশন ক্রম অনুসারে পুনরাবৃত্তি করতে পারেন। ইনসারশন ক্রমটি সেই ক্রমের সাথে মিলে যায় যেখানে প্রতিটি টুকরো সফলভাবে সেটে সন্নিবেশিত হয় add() পদ্ধতি দ্বারা (অর্থাৎ, সেট add() কল করার সময় সেটে কোনও সাদৃশ্যপূর্ণ উপাদান ইতিমধ্যেই ছিল না)।

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

সেট কিভাবে তৈরি করবেন?

সেট তৈরির দুটি উপায় রয়েছে। প্রথম উপায় হলো সেট কন্সট্রাক্টর ব্যবহার করা। দ্বিতীয় উপায় হল সেট অবজেক্ট লিটারেল ব্যবহার করা।

সেট কন্সট্রাক্টর

সেট কন্সট্রাক্টর একটি নতুন সেট অবজেক্ট তৈরি করে। আপনি কন্সট্রাক্টরের একটি আর্গুমেন্ট হিসাবে একটি পুনরাবৃত্তিযোগ্য অবজেক্ট পাস করতে পারেন। পুনরাবৃত্তিযোগ্য অবজেক্টের উপাদানগুলি নতুন সেটে যোগ করা হবে।

const set = new Set([1, 2, 3, 4, 5])

সেট অবজেক্ট লিটারেল

সেট অবজেক্ট লিটারেল একটি নতুন সেট অবজেক্ট তৈরি করে। আপনি অবজেক্ট লিটারেলের একটি আর্গুমেন্ট হিসাবে একটি পুনরাবৃত্তিযোগ্য অবজেক্ট পাস করতে পারেন। পুনরাবৃত্তিযোগ্য অবজেক্টের উপাদানগুলি নতুন সেটে যোগ করা হবে।

const set = {1, 2, 3, 4, 5};

সেট পদ্ধতি এবং বৈশিষ্ট্য

পদ্ধতিবিবরণ
add()সেট অবজেক্টে নির্দিষ্ট মানের সাথে একটি নতুন উপাদান যোগ করে।
clear()সেট অবজেক্ট থেকে সমস্ত উপাদান সরিয়ে দেয়।
delete()মানটির সাথে সংযুক্ত উপাদানটি সরিয়ে দেয় এবং সেই মানটি ফেরত দেয় যা Set.prototype.has(value) পূর্বে ফেরত দিয়েছিল। Set.prototype.has(value) পরে false ফেরত দেবে।
entries()সেট অবজেক্টের প্রতিটি উপাদানের জন্য [মান, মান] এর একটি অ্যারে ধারণ করে এমন একটি নতুন ইটারেটর অবজেক্ট ফেরত দেয়, ইনসারশন ক্রম অনুসারে।
forEach()সেট অবজেক্টের প্রতিটি মানের জন্য একবার প্রদত্ত ফাংশনটি চালায়, ইনসারশন ক্রম অনুসারে।
has()সেট অবজেক্টে প্রদত্ত মানের সাথে একটি উপাদান বিদ্যমান কিনা তা নির্দেশ করে একটি বুলিয়ান ফেরত দেয়।
keys()ইনসারশন ক্রম অনুসারে সেট অবজেক্টের প্রতিটি উপাদানের জন্য মানগুলি ধারণ করে এমন একটি নতুন ইটারেটর অবজেক্ট ফেরত দেয়।
values()ইনসারশন ক্রম অনুসারে সেট অবজেক্টের প্রতিটি উপাদানের জন্য মানগুলি ধারণ করে এমন একটি নতুন ইটারেটর অবজেক্ট ফেরত দেয়।
বৈশিষ্ট্যবিবরণ
sizeসেট অবজেক্টে মানের সংখ্যা ফেরত দেয়।

সেট উদাহরণ

সেটে একটি মান যোগ করুন

const set = new Set([1, 2, 3, 4, 5])
set.add(6)
console.log(Set) // Set { 1, 2, 3, 4, 5, 6 }

সেট থেকে একটি মান মুছে ফেলুন

const set = new Set([1, 2, 3, 4, 5])
set.delete(3)
console.log(set) // Set { 1, 2, 4, 5 }

সেটে একটি মান বিদ্যমান কিনা চেক করুন

const set = new Set([1, 2, 3, 4, 5])
console.log(set.has(3)) // true

সেটের মধ্য দিয়ে পুনরাবৃত্তি করুন

const set = new Set([1, 2, 3, 4, 5])
for (const item of Set) {
  console.log(item)
}
// 1
// 2
// 3
// 4
// 5

সেটকে অ্যারেতে রূপান্তর করুন

const set = new Set([1, 2, 3, 4, 5])
const array = Array.from(set)
console.log(array) // [1, 2, 3, 4, 5]

অ্যারেকে সেটে রূপান্তর করুন

const Array = [1, 2, 3, 4, 5]
const set = new Set(array)
console.log(Set) // Set { 1, 2, 3, 4, 5 }

সেটের আকার পান

const set = new Set([1, 2, 3, 4, 5])
console.log(set.size) // 5

সেট পরিষ্কার করুন

const set = new Set([1, 2, 3, 4, 5])
set.clear()
console.log(set) // Set {}

সেট মার্জ করুন

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([6, 7, 8, 9, 10])
const set3 = new Set([...set1, ...set2])
console.log(set3) // Set { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }

দুটি সেটের ছেদ পান

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5, 6, 7, 8])
const set3 = new Set([...set1].filter((x) => set2.has(x)))
console.log(set3) // Set { 4, 5 }

দুটি সেটের মধ্যে পার্থক্য পান

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5, 6, 7, 8])
const set3 = new Set([...set1].filter((x) => !set2.has(x)))
console.log(set3) // Set { 1, 2, 3 }

সেটটি অন্য সেটের একটি উপসেট কিনা চেক করুন

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set2].every((x) => set1.has(x))) // true

সেটটি অন্য সেটের একটি সুপারসেট কিনা চেক করুন

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set1].every((x) => set2.has(x))) // false

দুটি সেট ডিসজয়েন্ট কিনা চেক করুন

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([6, 7, 8, 9, 10])
console.log([...set1].every((x) => !set2.has(x))) // true

দুটি সেট সমান কিনা চেক করুন

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([1, 2, 3, 4, 5])
console.log(set1.size === set2.size && [...set1].every((x) => set2.has(x))) // true

ব্রাউজার সাপোর্ট

ChromeChromeFirefoxFirefoxEdgeEdgeSafariSafariOperaOpera
49+44+12+10.1+36+

সেট বনাম অ্যারে

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

এই নিবন্ধটি মূলত blog.imam.dev -এ প্রকাশিত হয়েছে।

রেফারেন্স

  1. Mozilla Developer Network - সেট

  2. W3Schools - সেট

  3. ECMAScript® 2015 Language Specification - সেট