ट्रैक
/
JavaScript
JavaScript
/
अभ्यास
/
Elyse के डीस्ट्रक्चर्ड जादू
Elyse के डीस्ट्रक्चर्ड जादू

Elyse के डीस्ट्रक्चर्ड जादू

सीखने का अभ्यास

परिचय

ऐरे डीस्ट्रक्चरिंग

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 अपनी ट्रेनिंग जारी रखती है। उसके पास ताश की एक गड्डी है, और वह उसके साथ तरह-तरह के करतब करना चाहती है।

चीज़ों को आसान बनाने के लिए वह आम तौर पर सिर्फ 2 से 10 तक के कार्डों से शुरुआत करती है, हालाँकि कुछ करतबों में अतिरिक्त (फेस) कार्ड भी शामिल हो सकते हैं।

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

Elyse के डीस्ट्रक्चर्ड जादू शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और JavaScript को 37 कॉन्सेप्ट159 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।