বাকিরা Rest-এ আছে
ধর, তোরা কয়েকজন ফ্রেন্ড মিলে ভ্রমণে গেলি সুন্দরবনে। রাতে জঙ্গলেই তাঁবু গেড়ে থাকবি। ক্যাম্পেইন করবি। এমন সাহসী সিদ্ধান্ত। মাঝরাতে দুইটা রয়েল বেঙ্গল টাইগার এসে তোদের দুইজনকে বলল, বাইরে আসো, কোলাকুলি করব। এই কথা শুনে তোদের দুজন বাদে বাকিরা গেল লুকিয়ে। হুট করে আরেকটা বাঘের বাচ্চা এসে বলল, বাকিরা কই। তখন তুই বললি, বাকিরা rest-এ আছে।
Rest Operator
JavaScript-এ তিনটা ডট দিয়ে Rest Operator (...) ইউজ করা যায়। এইটা ফাংশন, অ্যারে এবং অবজেক্টে একাধিক মানকে একসাথে ধরে রাখার জন্য খুবই উপকারি একটা সিস্টেম। Rest Operator ইউজ করলে—
একসাথে ফাংশনের অনেকগুলা আর্গুমেন্ট বা প্যারামিটারকে রাখা যায়।
অবজেক্টের ডিস্ট্রাকচারিং করার সময় একসাথে অনেকগুলা প্রোপার্টিকে রাখা যায়।
Array থেকে উপাদান বের করার সময় অনেকগুলা উপাদান আলাদা করা যায় বা একসাথে রাখা যায়।
Rest Operator অনেক আর্গুমেন্ট বা প্রোপার্টিকে বা উপাদানকে একসাথে রাখতে খুব কাজে লাগে। এ ছাড়া কখনো যদি আমরা নিশ্চিত না হই যে, কতগুলো ডেটা আসবে, তখন Rest Operator ব্যবহার করে সহজে সমস্ত ডেটাকে ধরে রাখা যায়। এ ছাড়া rest অপারেটর দিয়ে সহজ, ছোট এবং সিম্পল হয়। জটিল কাজকে সহজে করা যায়।
কয়েকটা উদাহরণ দেখি—
নিচের array-এর প্রথম দুইটা উপাদান আমরা দুইটা ভেরিয়েবলে রাখলাম। তারপর যত উপাদান থাকুক না কেন, সবগুলাকে তিনটা ডট চিহ্নের পর যেকোনো নাম দিয়েই রাখতে পারবি। আমি দিলাম rest নাম।
const [first, second, ...rest] = [10, 20, 30, 40, 50];
console.log(first);
console.log(second);
console.log(rest);
Output:
10
20
[30, 40, 50]অবজেক্ট ডিস্ট্রাকচারিংয়ের ক্ষেত্রে Rest Parameter ব্যবহার করে Object-এর কিছু প্রোপার্টি আলাদা করে এবং বাকিগুলো অন্য একটি নাম দিয়ে অন্য একটি Object-এ রাখা যায়। যেমন, নিচে details নামে রেখেছি। সেখানে city আর name ছাড়া বাকিসব প্রোপার্টি details নামক অবজেক্টে আছে।
const person = { name: 'Alice', age: 25, city: 'Dhaka', country: 'Bangladesh' };
const { name, city, ...details } = person;
console.log(name);
console.log(city);
console.log(details);
Output:
Alice
Dhaka
{ age: 25, country: 'Bangladesh' }ফাংশনের প্যারামিটারের ক্ষেত্রেও রেস্ট প্যারামিটার ইউজ করা যায়। যেমন, আমরা প্রথম প্যারামিটার বাদে বাকিগুলাকে rest অপারেটর দিয়ে আমাদের ইচ্ছামতো একটা নাম দিছি। যেমন, নিচে নাম দিলাম numbers
function multiply(multiplier, ...numbers) {
console.log(numbers);
}
multiply(2, 1, 2, 3);
multiply(3, 4, 5, 6);
Output:
[1, 2, 3]
[4, 5, 6]Practice:
- একটা product অবজেক্ট আছে const product = { name: "Laptop", price: 50000, brand: "Dell" }; এইটা থেকে name বাদে বাকি প্রোপার্টিগুলা আলাদা একটা অবজেক্টে রাখ।
- const project = { id: 101, title: "Web App", budget: 3000, client: "Tech Corp" }; এখানে title বাদে বাকি প্রোপার্টিগুলা আলাদা একটা অবজেক্টে রাখ।
- const programmer = { name: "Sophia", language: "JavaScript", experience: 5, specialty: "Frontend", tools: "React" }; এখানে language আর specialty আলাদা প্রোপার্টি হিসেবে রেখে বাকিগুলা details নামে একটা অবজেক্টে রাখ।
- একটা সংখ্যার array আছে। [10, 20, 3, 30, 300, 3000] এইটা থেকে প্রথম দুইটা উপাদান বাদে বাকিগুলা আলাদা আরেকটা array-এর মধ্যে রাখ।
- একটা function লেখ, যেটা দুইটা প্যারামিটার বাদে বাকিসব প্যারামিটারকে রেস্ট অপারেটর দিয়ে ধরে রাখবে। ফাংশনটি সেই বাকি প্যারামিটারগুলোর যোগফল রিটার্ন করবে।
- একটা ফাংশন লেখ, যে সব প্যারামিটারকে রেস্ট অপারেটর দিয়ে একটা array-তে রাখবে, তারপর আর্গুমেন্টগুলো যোগ করবে। ফাংশনটি array-এর উপাদানগুলোর গড় রিটার্ন করবে।