ট্র্যাক
/
JavaScript
JavaScript
/
অনুশীলনী
/
এলিসের ডিস্ট্রাকচার্ড মন্ত্র
এলিসের ডিস্ট্রাকচার্ড মন্ত্র

এলিসের ডিস্ট্রাকচার্ড মন্ত্র

লার্নিং অনুশীলনী

ভূমিকা

অ্যারে ডিস্ট্রাকচারিং

JavaScript-এর অ্যারে ডিস্ট্রাকচারিং সিনট্যাক্স হলো একটি অ্যারে থেকে মান বের করে আলাদা আলাদা ভ্যারিয়েবলে অ্যাসাইন করার একটি সংক্ষিপ্ত উপায়।

এই উদাহরণে, numberOfMoons অ্যারের প্রতিটি মান তার সংশ্লিষ্ট গ্রহে অ্যাসাইন করা হয়েছে:

const numberOfMoons = [0, 2, 14];
const [venus, mars, neptune] = numberOfMoons;

neptune;
// => 14

সংক্ষেপে:

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

অবজেক্ট ডিস্ট্রাকচারিং

JavaScript-এ অবজেক্ট থেকে প্রপার্টি বের করে আলাদা আলাদা ভ্যারিয়েবলে অ্যাসাইন করার জন্যও ডিস্ট্রাকচারিং সিনট্যাক্স আছে।

এই উদাহরণে, weather অবজেক্ট থেকে আবহাওয়ার প্রতীকগুলো বের করা হয়েছে:

const weather = {
  sun: '☀️',
  sun_behind_small_cloud: '🌤️',
  sun_behind_cloud: '⛅',
  sun_behind_large_cloud: '🌥️',
  sun_behind_rain_cloud: '🌦️',
  cloud: '☁️',
  cloud_with_rain: '🌧️',
  cloud_with_snow: '🌨️',
  cloud_with_lightning: '🌩️',
  cloud_with_lightning_and_rain: '⛈️',
};

const { sun, cloud, cloud_with_lightning: thunder } = weather;

sun;
// => '☀️'

cloud;
// => '☁️'

thunder;
// => '🌩️'

সংক্ষেপে:

  • এই সিনট্যাক্সের সাহায্যে প্রপার্টি বের করা যায়, আবার বের করার সময় নতুন নামও দেওয়া যায়।

  • ডিস্ট্রাকচারিং সিনট্যাক্স ফাংশন প্যারামিটারের ভেতরে ব্যবহার করা যায়।

নির্দেশনা

জাদুকর হতে চলা Elyse তার প্রশিক্ষণ চালিয়ে যাচ্ছে। তার কাছে তাসের একটি ডেক আছে, যেটি নিয়ে সে কারিকুরি করতে চায়।

ব্যাপারটা সহজ করতে সে সাধারণত ২ থেকে ১০ নম্বরের তাস দিয়েই শুরু করে, যদিও কিছু কারিকুরিতে অতিরিক্ত (ফেস) কার্ড লাগতে পারে।

Note

তাসগুলো এলোমেলো করার অনেক উপায় আছে, কিন্তু জাদুর মায়া ধরে রাখতে হলে এটা জরুরি যে কোনো একটি পদ্ধতিই ব্যবহার করা হবে না, অর্থাৎ Elyse splice, slice, shift, unshift, push, at ব্যবহার করে না। অ্যারে অ্যাক্সেসর array[index] এবং অবজেক্ট অ্যাক্সেসর (object[key] ও object.key)ও কখনোই ব্যবহার করা যাবে না।

Elyse-কে তার জাদু আরও শক্তিশালী করতে সাহায্য করতে চান?

Advanced

প্রতিটি ফাংশনই প্যারামিটার এবং একটি return expression সম্বলিত একটি ফাংশন বডি দিয়ে বাস্তবায়ন করা যায়।

1. প্রথম কার্ডটি নিন

Elyse array[index], .at(index) বা .shift() ব্যবহার না করেই ডেকের প্রথম কার্ডটি হাজির করবে। একেবারে জাদুর মতো।

const deck = [5, 9, 7, 1, 8];

getFirstCard(deck);
// => 5

2. দ্বিতীয় কার্ডটি নিন

Elyse হাতের কৌশল দেখিয়ে array[index] বা .shift() ব্যবহার না করেই ডেকের দ্বিতীয় কার্ডটি হাজির করে।

const deck = [3, 2, 10, 6, 7];

getSecondCard(deck);
// => 2

3. দুটি কার্ড অদলবদল করুন

Elyse ডেকের দুটি কার্ডের জায়গা বদলে দেবে। এজন্য তাকে একটি ফাংশনও কল করতে হবে না।

const deck = [10, 7];

swapTwoCards(deck);
// => [7, 10]

4. তিনটি কার্ড ঘুরিয়ে সাজান

আরও কিছু হাতের কৌশল দেখানোর জন্য Elyse তিনটি কার্ড নিয়ে দ্রুত উপরের কার্ডটি পিছনে নিয়ে যায়, ফলে মাঝের কার্ডটি প্রথম কার্ড হয়ে যায় আর আগের নিচের কার্ডটি মাঝের কার্ড হয়ে যায়। এজন্য তাকে একটি ফাংশনও কল করতে হবে না।

const deck = [2, 6, 10];

shiftThreeCardsAround(deck);
// => [6, 10, 2]

5. নাম দেওয়া স্তূপটি বাছুন

Elyse ডেকটিকে দুটি স্তূপে ভাগ করবে। এরপর সে দর্শককে দুটি স্তূপের একটি বাছতে বলে, যার নাম আমরা দেব chosen। disregarded স্তূপটির আর কোনো প্রয়োজন নেই, তাই সে সেটি উধাও করে দেয়। এজন্য তাকে একটি ফাংশনও কল করতে হবে না।

const deck = [5, 4, 7, 10];
const chosen = [5, 4];
const disregarded = [7, 10];

pickNamedPile({ chosen, disregarded });
// => [5, 4]

5. বাছাই করা স্তূপটি অদলবদল করুন

দুর্ভাগ্যবশত দর্শক বারবার "ভুল" স্তূপটিই বেছে নেয়, কিন্তু কিছু চটজলদি চতুর জাদু দিয়ে Elyse chosen স্তূপের নাম বদলে disregarded করে দেয় আর disregarded স্তূপের নাম করে দেয় chosen। এজন্য তাকে একটি ফাংশনও কল করতে হবে না।

const deck = [5, 4, 7, 10];
const chosen = [5, 4];
const disregarded = [7, 10];

swapNamedPile({ chosen, disregarded });
// => { chosen: [7, 10], disregarded: [5, 4] }
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
JavaScript Exercism

এলিসের ডিস্ট্রাকচার্ড মন্ত্র শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, JavaScript ট্র্যাকের 37টি কনসেপ্ট159টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।