Rest এবং Spread অপারেটর দুইটি অত্যন্ত শক্তিশালী ফিচার যা ES6 (ECMAScript 2015) এ পরিচিতি পায়। এগুলো ... চিহ্ন দিয়ে প্রকাশিত হয় এবং একে অপর থেকে আলাদা হলেও, তাদের ব্যবহার অনেক ক্ষেত্রে মিলে। এগুলির মধ্যে পার্থক্য হলো যে Rest অপারেটর ডাটা সংগ্রহ করার জন্য ব্যবহৃত হয়, এবং Spread অপারেটর ডাটা ছড়িয়ে দেওয়ার জন্য ব্যবহৃত হয়।
1. Rest অপারেটর
Rest অপারেটর ... ব্যবহার করে, এটি ফাংশনের প্যারামিটার বা অ্যারে/অবজেক্ট থেকে অবশিষ্ট অংশ সংগ্রহ করে। এটি এমনকি একটি একাধিক প্যারামিটারকে একত্রিত করে একটি অ্যারে বা অবজেক্টে রূপান্তরিত করতে পারে।
Rest অপারেটর প্যারামিটার হিসেবে (Function Parameters)
ফাংশনের প্যারামিটারে Rest অপারেটর ব্যবহার করা হলে, এটি সমস্ত অতিরিক্ত প্যারামিটার একটি অ্যারেতে পরিণত করে।
function sum(...numbers) {
return numbers.reduce((acc, num) => acc + num, 0);
}
console.log(sum(1, 2, 3, 4)); // 10
এখানে, ...numbers সব অতিরিক্ত প্যারামিটারকে একত্রিত করে একটি অ্যারেতে পরিণত করেছে এবং পরে reduce() ব্যবহার করে তাদের যোগফল বের করা হয়েছে।
Rest অপারেটর অবজেক্ট ডিকন্সট্রাকচারে
Rest অপারেটর অবজেক্ট ডিকন্সট্রাকচারের ক্ষেত্রে ব্যবহার করা যায়, যেখানে আপনি কিছু প্রপার্টি নিষ্কাশন করতে চান এবং বাকী প্রপার্টিগুলিকে একটি নতুন অবজেক্টে রাখতে চান।
const person = { name: "John", age: 30, country: "USA" };
const { name, ...rest } = person;
console.log(name); // "John"
console.log(rest); // { age: 30, country: "USA" }
এখানে, name নিষ্কাশিত হয়ে গেছে এবং বাকী সমস্ত প্রপার্টি rest নামক অবজেক্টে রাখা হয়েছে।
2. Spread অপারেটর
Spread অপারেটর ... ব্যবহার করে ডাটা ছড়িয়ে দেয় বা বিস্তার ঘটায়। এটি অ্যারে, অবজেক্ট বা অন্য কোনো iterable এর সমস্ত উপাদান আলাদা আলাদা করে বের করে এনে অন্য একটি কনটেইনারে রাখে।
Spread অপারেটর অ্যারে (Array) কোপিতে
const numbers = [1, 2, 3];
const moreNumbers = [...numbers, 4, 5, 6];
console.log(moreNumbers); // [1, 2, 3, 4, 5, 6]
এখানে, numbers অ্যারের সমস্ত উপাদান moreNumbers অ্যারেতে বিস্তৃত হয়েছে, যার ফলে নতুন অ্যারেতে পুরনো অ্যারের উপাদানগুলো যুক্ত হয়েছে।
Spread অপারেটর অবজেক্ট (Object) কোপিতে
const person = { name: "John", age: 30 };
const updatedPerson = { ...person, country: "USA" };
console.log(updatedPerson); // { name: "John", age: 30, country: "USA" }
এখানে, person অবজেক্টের সমস্ত প্রপার্টি নতুন updatedPerson অবজেক্টে বিস্তৃত হয়েছে, এবং আমরা নতুন একটি প্রপার্টি country যোগ করেছি।
Rest এবং Spread অপারেটরের মধ্যে পার্থক্য
| বৈশিষ্ট্য | Rest অপারেটর | Spread অপারেটর |
|---|---|---|
| ব্যবহার | ফাংশন প্যারামিটার বা অবজেক্ট/অ্যারে থেকে অবশিষ্ট অংশ সংগ্রহ করতে | অ্যারে বা অবজেক্টে ডাটা বিস্তার ঘটাতে |
| অপারেটরের অবস্থান | প্যারামিটার লিস্টের শেষে, অথবা অবজেক্ট ডিকন্সট্রাকচনে ব্যবহৃত হয় | অ্যারে বা অবজেক্টের ডাটা বিস্তার করতে ব্যবহৃত হয় |
| ফলাফল | একত্রিত ডাটা (অ্যারে বা অবজেক্ট) তৈরি করে | নতুন অ্যারে বা অবজেক্ট তৈরি করে |
Conclusion (সারাংশ)
- Rest অপারেটর ব্যবহৃত হয় ডাটা সংগ্রহের জন্য, যেমন ফাংশনের অতিরিক্ত প্যারামিটার সংগ্রহ করতে অথবা অবজেক্টের অবশিষ্ট প্রপার্টি একত্রিত করতে।
- Spread অপারেটর ব্যবহৃত হয় ডাটা বিস্তার বা ছড়িয়ে দেওয়ার জন্য, যেমন একটি অ্যারে বা অবজেক্টে নতুন উপাদান যুক্ত করতে অথবা ডাটা কপি করতে।
এই দুটি অপারেটরের মাধ্যমে কোড লেখার সময় আরও শক্তিশালী এবং নমনীয় পদ্ধতিতে কাজ করা সম্ভব।
Rest অপারেটর (প্রতীক: ...) ES6 (ECMAScript 2015) এর একটি গুরুত্বপূর্ণ ফিচার, যা একটি ফাংশনে একাধিক আর্গুমেন্ট একত্রিত করে একটি অ্যারে বা অবজেক্টে রূপান্তর করতে ব্যবহৃত হয়। এটি প্যারামিটার বা অবজেক্ট প্রপার্টি হিসাবে ব্যবহার করা যেতে পারে এবং একটি ফাংশন বা ডাটা স্ট্রাকচারে অবশিষ্ট উপাদানগুলিকে সংগ্রহ করার জন্য কাজ করে।
Rest অপারেটরের সিনট্যাক্স
// প্যারামিটার হিসেবে
const functionName = (...args) => {
// কোড
}
// অবজেক্ট ডেস্ট্রাকচারিং এর সময়
const { key1, key2, ...rest } = object;
Rest অপারেটরের ব্যবহার
১. ফাংশন প্যারামিটার হিসেবে Rest অপারেটর
যখন একটি ফাংশনে অজস্র আর্গুমেন্ট হতে পারে, তখন Rest অপারেটর ব্যবহার করা হয়। এটি ফাংশনের প্যারামিটারগুলির অতিরিক্ত মানকে একটি অ্যারে হিসেবে সংগ্রহ করে।
উদাহরণ:
function sum(...numbers) {
return numbers.reduce((acc, num) => acc + num, 0);
}
console.log(sum(1, 2, 3)); // 6
console.log(sum(5, 10, 15, 20)); // 50
এখানে, ...numbers Rest অপারেটর হিসেবে ব্যবহৃত হয়েছে এবং ফাংশনের মধ্যে যে কোনো সংখ্যক আর্গুমেন্টকে অ্যারে হিসেবে সংগ্রহ করছে। এরপর reduce() মেথড ব্যবহার করে সেই অ্যারের সকল সংখ্যার যোগফল বের করা হয়েছে।
আরও উদাহরণ:
function greet(message, ...names) {
console.log(message);
names.forEach(name => console.log(`Hello, ${name}!`));
}
greet("Welcome", "John", "Doe", "Jane");
// Output:
// Welcome
// Hello, John!
// Hello, Doe!
// Hello, Jane!
এখানে, ...names দিয়ে অতিরিক্ত প্যারামিটারগুলোকে একটি অ্যারে হিসাবে সংগ্রহ করা হয়েছে।
২. ডেস্ট্রাকচারিং এর সাথে Rest অপারেটর
Rest অপারেটরটি ডেস্ট্রাকচারিং এর সাথে ব্যবহার করলে আপনি অবজেক্ট বা অ্যারের অতিরিক্ত উপাদানগুলি সহজে সংগ্রহ করতে পারেন। এটি সাধারণত অবজেক্ট বা অ্যারে থেকে কিছু উপাদান বের করার পর অবশিষ্ট উপাদানগুলো একত্রিত করতে ব্যবহৃত হয়।
অ্যারে ডেস্ট্রাকচারিং এর সাথে:
const numbers = [1, 2, 3, 4, 5];
// প্রথম দুটি উপাদান আলাদা করার পর বাকিগুলোর জন্য Rest অপারেটর
const [first, second, ...rest] = numbers;
console.log(first); // 1
console.log(second); // 2
console.log(rest); // [3, 4, 5]
এখানে, প্রথম দুটি উপাদানকে আলাদা করা হয়েছে, এবং বাকি উপাদানগুলোকে rest অ্যারেতে সংরক্ষণ করা হয়েছে।
অবজেক্ট ডেস্ট্রাকচারিং এর সাথে:
const person = { name: "John", age: 30, country: "USA", profession: "Engineer" };
// name এবং age আলাদা করার পর বাকিগুলোর জন্য Rest অপারেটর
const { name, age, ...otherInfo } = person;
console.log(name); // John
console.log(age); // 30
console.log(otherInfo); // { country: 'USA', profession: 'Engineer' }
এখানে, name এবং age আলাদা করে, অবশিষ্ট প্রপার্টিগুলোকে otherInfo অবজেক্টে জমা করা হয়েছে।
৩. Rest অপারেটর এবং Spread অপারেটর
Rest অপারেটর এবং Spread অপারেটর (প্রতীক: ...) দেখতে একে অপরের মতো, তবে তাদের কাজের মধ্যে পার্থক্য রয়েছে।
- Rest অপারেটর: এটি ফাংশনে বা ডেস্ট্রাকচারিংয়ের মধ্যে অবশিষ্ট উপাদানগুলো সংগ্রহ করতে ব্যবহৃত হয়।
- Spread অপারেটর: এটি একটি অ্যারে বা অবজেক্টের উপাদানগুলোকে আলাদা করে নতুন অ্যারে বা অবজেক্টে প্রয়োগ করতে ব্যবহৃত হয়।
Spread অপারেটর উদাহরণ:
const numbers = [1, 2, 3];
const newNumbers = [...numbers, 4, 5];
console.log(newNumbers); // [1, 2, 3, 4, 5]
এখানে, Spread অপারেটর ব্যবহার করে numbers অ্যারের উপাদানগুলোকে নতুন অ্যারে newNumbers তে কপি করা হয়েছে।
৪. Rest অপারেটর এবং ফাংশন Overloading
ফাংশনগুলিতে বিভিন্ন সংখ্যক প্যারামিটার গ্রহণ করার জন্য Rest অপারেটর একটি সহজ এবং কার্যকরী পদ্ধতি। এতে ফাংশনটি একটি পরিবর্তনযোগ্য সংখ্যক আর্গুমেন্ট গ্রহণ করতে পারে।
function greetMessage(message, ...names) {
return `${message}, ${names.join(", ")}!`;
}
console.log(greetMessage("Hello", "John", "Jane", "Doe")); // "Hello, John, Jane, Doe!"
এখানে, ...names দিয়ে যেকোনো সংখ্যক নামের প্যারামিটারকে একত্রিত করে names অ্যারে তৈরি করা হয়েছে।
Rest অপারেটরের সুবিধা
- ফাংশনগুলিতে পরিবর্তনশীল প্যারামিটার: একাধিক আর্গুমেন্ট নেওয়ার জন্য Rest অপারেটর সুবিধাজনক।
- ডেস্ট্রাকচারিংয়ের মধ্যে অবশিষ্ট মান সংগ্রহ: এটি অবজেক্ট বা অ্যারের অবশিষ্ট উপাদান সংগ্রহ করতে সহায়ক।
- কোডকে পরিষ্কার এবং সংক্ষিপ্ত করা: ডেস্ট্রাকচারিং বা প্যারামিটারগুলির মধ্যে Rest অপারেটর ব্যবহার কোডকে সংক্ষিপ্ত, পরিষ্কার এবং পড়তে সহজ করে তোলে।
সারাংশ
Rest অপারেটর (...) ES6-এর একটি শক্তিশালী ফিচার, যা ফাংশন প্যারামিটার এবং ডেস্ট্রাকচারিং এ অবশিষ্ট উপাদানগুলো সংগ্রহ করতে ব্যবহৃত হয়। এটি অ্যারে বা অবজেক্টের অতিরিক্ত উপাদানগুলিকে একটি একক অ্যারে বা অবজেক্টে রূপান্তর করার জন্য একটি কার্যকর পদ্ধতি। এর মাধ্যমে কোডকে সংক্ষিপ্ত, পরিষ্কার এবং আরও কার্যকরী করা সম্ভব হয়।
Spread Operator (...) ES6 (ECMAScript 2015) এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য, যা অ্যারে বা অবজেক্টের উপাদানগুলোকে একটি নতুন কন্টেক্সটে এক্সপ্যান্ড বা "ফেলিয়ে" দেয়। এই অপারেটরটি মূলত অ্যারে বা অবজেক্টের উপাদানগুলোকে নতুন ডেটা স্ট্রাকচারে কপি করতে বা একত্রিত করতে ব্যবহৃত হয়।
Spread Operator মূলত array, object, বা function এ ব্যবহৃত হতে পারে এবং এটি মূল ডেটা স্ট্রাকচারের কোনো পরিবর্তন না করে উপাদানগুলোকে বিস্তৃত (expand) করতে সাহায্য করে।
Spread Operator এর সাধারণ সিনট্যাক্স
- Array:
...array - Object:
...object
Spread Operator এর ব্যবহার
- Array এর সাথে Spread Operator
Spread Operator অ্যারের উপাদানগুলোকে নতুন অ্যারে বা অন্য অ্যারে মধ্যে প্রসারিত (expand) করতে সাহায্য করে। এটি মূল অ্যারের ডেটা পরিবর্তন না করেই একটি নতুন অ্যারে তৈরি করতে ব্যবহৃত হয়।
উদাহরণ: অ্যারে কপি করা
const numbers = [1, 2, 3];
const newNumbers = [...numbers];
console.log(newNumbers); // [1, 2, 3]
এখানে, numbers অ্যারেটি Spread Operator ব্যবহার করে newNumbers তে কপি করা হয়েছে। মূল অ্যারে numbers অক্ষত আছে এবং newNumbers একটি নতুন অ্যারে হিসেবে তৈরি হয়েছে।
উদাহরণ: অ্যারে একত্রিত (merge) করা
const numbers1 = [1, 2];
const numbers2 = [3, 4];
const combinedNumbers = [...numbers1, ...numbers2];
console.log(combinedNumbers); // [1, 2, 3, 4]
এখানে, numbers1 এবং numbers2 কে Spread Operator দিয়ে একত্রিত (merge) করা হয়েছে। দুটি অ্যারে একসাথে নতুন একটি অ্যারে combinedNumbers এ পরিণত হয়েছে।
উদাহরণ: নতুন উপাদান যোগ করা
const numbers = [1, 2, 3];
const moreNumbers = [...numbers, 4, 5];
console.log(moreNumbers); // [1, 2, 3, 4, 5]
এখানে, numbers অ্যারেতে নতুন উপাদান 4 এবং 5 যুক্ত করা হয়েছে।
- Object এর সাথে Spread Operator
Spread Operator অবজেক্টের কনটেন্ট একত্রিত বা কপি করার জন্যও ব্যবহৃত হয়। এটি অবজেক্টের শেল বা কনটেইনারে উপাদানগুলি প্রসারিত করতে সাহায্য করে।
উদাহরণ: অবজেক্ট কপি করা
const person = {
name: "John",
age: 30
};
const newPerson = { ...person };
console.log(newPerson); // { name: "John", age: 30 }
এখানে, person অবজেক্টটি newPerson তে কপি করা হয়েছে। নতুন অবজেক্টটি মূল অবজেক্টের কন্টেন্টের কপি, কিন্তু কোনো মিউটেশন হয়নি।
উদাহরণ: অবজেক্ট একত্রিত করা
const person = { name: "John", age: 30 };
const job = { position: "Developer", company: "XYZ" };
const combinedPerson = { ...person, ...job };
console.log(combinedPerson); // { name: "John", age: 30, position: "Developer", company: "XYZ" }
এখানে, person এবং job অবজেক্টগুলো Spread Operator দিয়ে একত্রিত করা হয়েছে। নতুন অবজেক্ট combinedPerson তে দুটি অবজেক্টের কন্টেন্ট মিশে গেছে।
উদাহরণ: অবজেক্টের মান আপডেট করা
const person = { name: "John", age: 30 };
const updatedPerson = { ...person, age: 31 };
console.log(updatedPerson); // { name: "John", age: 31 }
এখানে, age মানটি আপডেট করা হয়েছে এবং অন্যান্য মান অপরিবর্তিত রাখা হয়েছে।
Spread Operator এর সুবিধা
- কপি করার সহজ উপায়: Spread Operator দিয়ে অ্যারে বা অবজেক্টের কপি তৈরি করা সহজ, যার ফলে ডেটার অরিজিনাল কন্টেন্ট পরিবর্তন না করে নতুন ডেটা স্ট্রাকচার তৈরি করা সম্ভব।
- অ্যারে বা অবজেক্ট একত্রিত করা: এটি একাধিক অ্যারে বা অবজেক্টকে একত্রিত (merge) করার জন্য খুবই কার্যকর।
- ডেটার কন্টেন্টের পুনরায় ব্যবহার: Spread Operator ব্যবহার করে আপনি কোনো ডেটার কন্টেন্ট পুনরায় ব্যবহার করতে পারেন, এবং মূল ডেটার সাথে কোনো পরিবর্তন না করেই নতুন ডেটা স্ট্রাকচার তৈরি করতে পারেন।
- কমপ্যাক্ট কোড: Spread Operator কোড কমপ্যাক্ট এবং সহজ করে তোলে, কারণ আপনি শুধুমাত্র
...ব্যবহার করে একটি অ্যারে বা অবজেক্টের উপাদান প্রসারিত করতে পারেন।
নিষ্কর্ষ
Spread Operator ES6 এর একটি গুরুত্বপূর্ণ এবং শক্তিশালী বৈশিষ্ট্য যা অ্যারে এবং অবজেক্টের উপাদানকে দ্রুত এবং সহজভাবে প্রসারিত, কপি বা একত্রিত করতে সাহায্য করে। এটি কোডকে ছোট এবং পড়তে সহজ করে তোলে এবং ডেটা ম্যানিপুলেশনকে অনেক বেশি কার্যকর করে।
Rest এবং Spread দুটি খুবই গুরুত্বপূর্ণ ফিচার যা ES6 (ECMAScript 2015) এ যোগ করা হয়েছে। এগুলো Array এবং Object এর সাথে ব্যবহৃত হলে, কোডকে আরও পরিষ্কার, সংক্ষিপ্ত এবং কার্যকরী করে তোলে।
নিচে আমরা Rest এবং Spread এর ব্যবহার সম্পর্কিত বিস্তারিত আলোচনা করবো।
Spread (এস্প্রেড)
Spread অপারেটর (...) কে ব্যবহার করে আপনি একটি Array বা Object এর মধ্যে থাকা উপাদানগুলোকে আলাদাভাবে বিভক্ত করে অন্য একটি Array বা Object এ কপি করতে পারেন।
Array এর সাথে Spread:
Spread অপারেটর Array এর উপাদানগুলোকে পৃথক করে এবং নতুন Array এ কপি করে।
উদাহরণ:
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];
console.log(arr2); // [1, 2, 3, 4, 5]
এখানে, arr1 এর সব উপাদান arr2 তে কপি করা হয়েছে এবং পরে 4 এবং 5 যুক্ত করা হয়েছে।
Object এর সাথে Spread:
Spread অপারেটর ব্যবহার করে একটি Object এর সমস্ত প্রপার্টি অন্য একটি Object এ কপি করা যেতে পারে।
উদাহরণ:
const person = {
name: "John",
age: 30
};
const updatedPerson = { ...person, city: "New York" };
console.log(updatedPerson); // { name: "John", age: 30, city: "New York" }
এখানে, person অবজেক্টের প্রপার্টি সব updatedPerson এ কপি করা হয়েছে এবং পরে city প্রপার্টি যোগ করা হয়েছে।
Rest (রেস্ট)
Rest অপারেটর (...) ব্যবহার করে আপনি Array বা Object থেকে অবশিষ্ট উপাদানগুলোকে একটি নতুন Array বা Object এ সংগ্রহ করতে পারেন।
Array এর সাথে Rest:
Rest অপারেটর ব্যবহার করে আপনি একটি Array এর বাকী উপাদানগুলোকে একটি নতুন Array তে নিয়ে আসতে পারেন।
উদাহরণ:
const arr = [1, 2, 3, 4, 5];
const [first, second, ...rest] = arr;
console.log(first); // 1
console.log(second); // 2
console.log(rest); // [3, 4, 5]
এখানে, প্রথম দুটি উপাদান আলাদাভাবে ডেস্ট্রাকচার করা হয়েছে এবং বাকী উপাদানগুলো rest এ রাখা হয়েছে।
Object এর সাথে Rest:
Rest অপারেটর ব্যবহার করে আপনি একটি Object এর অবশিষ্ট প্রপার্টি সংগ্রহ করতে পারেন।
উদাহরণ:
const person = {
name: "John",
age: 30,
city: "New York"
};
const { name, ...rest } = person;
console.log(name); // "John"
console.log(rest); // { age: 30, city: "New York" }
এখানে, name প্রপার্টি আলাদাভাবে ডেস্ট্রাকচার করা হয়েছে এবং বাকি প্রপার্টি rest অবজেক্টে রাখা হয়েছে।
Rest এবং Spread এর মধ্যে পার্থক্য
- Spread অপারেটর উপাদানগুলোকে বিস্তৃত করে বা কপি করে, অর্থাৎ এটি মূল Array বা Object এর উপাদানগুলিকে আলাদাভাবে একটি নতুন Array বা Object এ নিয়ে আসে।
- Rest অপারেটর উপাদানগুলোকে সংগ্রহ করে, অর্থাৎ এটি ব্যবহৃত হয় যখন আপনি কিছু উপাদান আলাদা করতে চান এবং বাকী উপাদানগুলো একটি নতুন Array বা Object তে একত্রিত করতে চান।
চূড়ান্ত উদাহরণ: Array এবং Object এর সাথে Rest এবং Spread
Array এর জন্য
const arr1 = [1, 2, 3, 4, 5];
// Spread: arr1 এর উপাদানগুলো নতুন Array তে কপি করা
const arr2 = [...arr1, 6, 7];
console.log(arr2); // [1, 2, 3, 4, 5, 6, 7]
// Rest: arr1 থেকে প্রথম দুই উপাদান আলাদা করা এবং বাকী উপাদানগুলোকে rest এ সংগ্রহ করা
const [first, second, ...rest] = arr1;
console.log(first); // 1
console.log(second); // 2
console.log(rest); // [3, 4, 5]
Object এর জন্য
const person = {
name: "John",
age: 30,
city: "New York"
};
// Spread: person এর সব প্রপার্টি নতুন অবজেক্টে কপি করা
const updatedPerson = { ...person, country: "USA" };
console.log(updatedPerson); // { name: "John", age: 30, city: "New York", country: "USA" }
// Rest: person এর name প্রপার্টি আলাদা করা এবং বাকী প্রপার্টি rest এ সংগ্রহ করা
const { name, ...rest } = person;
console.log(name); // "John"
console.log(rest); // { age: 30, city: "New York" }
উপসংহার
Rest এবং Spread অপারেটর ES6 এর গুরুত্বপূর্ণ ফিচার যা Array এবং Object এর সাথে ব্যবহৃত হয়ে কোডের গঠন সহজ এবং পরিষ্কার করে তোলে। Spread ব্যবহার করে আপনি উপাদানগুলো আলাদা করতে পারেন, আর Rest ব্যবহার করে আপনি অবশিষ্ট উপাদানগুলো সংগ্রহ করতে পারেন।
Rest এবং Spread অপারেটর দুইটি ভিন্ন উদ্দেশ্যে ব্যবহৃত হয়, তবে উভয়েই ... চিহ্ন ব্যবহার করে। তাদের ব্যবহারের প্রেক্ষাপট এবং কাজের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে। নিচে Rest এবং Spread এর মধ্যে পার্থক্য বিশদভাবে আলোচনা করা হলো।
1. Rest Operator (পারামিটার সংগ্রহের জন্য)
Rest Operator ... ব্যবহার করা হয় ফাংশনের প্যারামিটার হিসেবে, যেখানে এটি একাধিক আর্গুমেন্ট বা উপাদান একত্রিত করে একটি অ্যারে বা অবজেক্টে রূপান্তর করে।
- ব্যবহার: এটি একাধিক আর্গুমেন্ট একত্রিত করতে ব্যবহৃত হয় এবং তা একটি নতুন অ্যারে বা অবজেক্টে জমা করে।
- ফাংশনের প্যারামিটার: যখন কোনো ফাংশন বহু প্যারামিটার নেয় এবং সেই প্যারামিটারগুলোর সংখ্যা পরিবর্তনশীল, তখন rest ব্যবহার করা হয়।
উদাহরণ:
// Rest with function parameters
function sum(...numbers) {
return numbers.reduce((acc, num) => acc + num, 0);
}
console.log(sum(1, 2, 3, 4)); // 10
এখানে, ...numbers সমস্ত আর্গুমেন্টকে একটি অ্যারে আকারে সংরক্ষণ করছে। তারপর সেই অ্যারের সব মান যোগ করা হয়েছে।
আরও একটি উদাহরণ:
// Rest with object destructuring
const person = { name: "John", age: 30, country: "USA" };
const { name, ...rest } = person;
console.log(name); // "John"
console.log(rest); // { age: 30, country: "USA" }
এখানে ...rest বাকী অবজেক্টের সকল প্রপার্টি একত্রিত করে একটি নতুন অবজেক্টে রূপান্তরিত হয়েছে।
2. Spread Operator (ডাটা বিভাজন বা কপি করার জন্য)
Spread Operator ... ব্যবহার করা হয় কোনো অ্যারে বা অবজেক্টের ভিতরের উপাদানগুলোকে বিস্তৃত (spread) বা কপি করার জন্য।
- ব্যবহার: এটি একটি অ্যারে বা অবজেক্টের উপাদানগুলোকে নতুন অ্যারে বা অবজেক্টে বিস্তৃত করে (spread) দেয়।
- অ্যারে বা অবজেক্ট কপি/বিস্তার: এক অ্যারে বা অবজেক্টের উপাদানগুলোকে অন্য অ্যারে বা অবজেক্টে কপি বা একত্রিত করার জন্য ব্যবহৃত হয়।
উদাহরণ:
// Spread with arrays
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];
console.log(arr2); // [1, 2, 3, 4, 5]
এখানে ...arr1 arr1 অ্যারের সব উপাদানকে বিস্তৃত (spread) করে নতুন অ্যারে arr2 তে যুক্ত করেছে।
অবজেক্টের ক্ষেত্রে:
// Spread with objects
const person = { name: "John", age: 30 };
const newPerson = { ...person, country: "USA" };
console.log(newPerson); // { name: "John", age: 30, country: "USA" }
এখানে ...person অবজেক্টের সব প্রপার্টিকে নতুন অবজেক্ট newPerson তে কপি করেছে এবং নতুন প্রপার্টি country যুক্ত করেছে।
Rest এবং Spread এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Rest | Spread |
|---|---|---|
| ব্যবহার | ফাংশনের প্যারামিটার বা অবজেক্ট/অ্যারে ডেস্ট্রাকচারিংয়ে একত্রিত করার জন্য | অ্যারে বা অবজেক্টের উপাদান বিস্তৃত (spread) বা কপি করার জন্য |
| কাজ | একাধিক প্যারামিটার বা প্রপার্টি একত্রিত করে একটি একক ডাটা (অ্যারে/অবজেক্ট) তৈরি করে | একটি ডাটা (অ্যারে/অবজেক্ট) থেকে উপাদানগুলো আলাদা করে অন্য ডাটাতে ছড়িয়ে দেয় |
| ব্যবহারের স্থান | ফাংশন প্যারামিটার, অবজেক্ট/অ্যারে ডেস্ট্রাকচারিং | অ্যারে/অবজেক্ট কপি বা একত্রিত করতে, নতুন অ্যারে/অবজেক্ট তৈরি করতে |
| সিনট্যাক্স | ... (প্যারামিটার হিসেবে) | ... (অ্যারে বা অবজেক্টের উপাদান হিসেবে) |
Rest এবং Spread এর উদাহরণ
Rest Example:
// Rest in function parameters
function greet(firstName, lastName, ...otherInfo) {
console.log(firstName, lastName); // John Doe
console.log(otherInfo); // ["age: 30", "city: New York"]
}
greet("John", "Doe", "age: 30", "city: New York");
Spread Example:
// Spread in arrays
const numbers1 = [1, 2, 3];
const numbers2 = [...numbers1, 4, 5];
console.log(numbers2); // [1, 2, 3, 4, 5]
// Spread in objects
const user = { name: "John", age: 30 };
const updatedUser = { ...user, country: "USA" };
console.log(updatedUser); // { name: "John", age: 30, country: "USA" }
সারাংশ
- Rest: একাধিক উপাদান বা প্যারামিটারকে একত্রিত করে একটি একক ডাটা তৈরি করতে ব্যবহৃত হয়।
- Spread: একটি ডাটা থেকে উপাদানগুলো বিস্তৃত করে অন্য ডাটাতে কপি বা যুক্ত করতে ব্যবহৃত হয়।
এই পার্থক্যগুলি ES6 এর Rest এবং Spread অপারেটর ব্যবহারকারীদের কাছে খুবই গুরুত্বপূর্ণ এবং বিভিন্ন পরিস্থিতিতে যথাযথভাবে এগুলির ব্যবহার করা প্রয়োজন।
Read more