ट्रैक
/
JavaScript
JavaScript
/
अभ्यास
/
Elyse के विश्लेषणात्मक जादू
Elyse के विश्लेषणात्मक जादू

Elyse के विश्लेषणात्मक जादू

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

परिचय

एरो फंक्शन

फंक्शन डिक्लेरेशन और फंक्शन एक्सप्रेशन के अलावा JavaScript में फंक्शन बनाने का एक और बहुत संक्षिप्त तरीका भी होता है। ऐसे फंक्शन को एरो फंक्शन कहते हैं।

यहाँ एक फंक्शन डिक्लेरेशन और एक एरो फंक्शन की तुलना दी गई है।

function addUpTwoNumbers(num1, num2) {
  return num1 + num2;
}
// function keyword removed and => added
const addUpTwoNumbers = (num1, num2) => {
  return num1 + num2;
};

अगर फंक्शन बॉडी में सिर्फ एक रिटर्न स्टेटमेंट हो, जैसा ऊपर के उदाहरण में है, तो {} और return कीवर्ड छोड़े जा सकते हैं। अगर सिर्फ एक पैरामीटर हो, तो ब्रैकेट () भी छोड़े जा सकते हैं।

const addUpTwoNumbers = (num1, num2) => num1 + num2;
const square = num => num * num;

एरो फंक्शन का उपयोग अक्सर फंक्शन कॉल के अंदर ही छोटे कॉलबैक फंक्शन बनाने के लिए किया जाता है।

applyToSquare(number => number * number);

ऐरे का विश्लेषण

ऐरे में ऐरे की सामग्री का विश्लेषण करने के लिए पहले से मौजूद मेथड होते हैं। इनमें से ज़्यादातर मेथड एक ऐसा फंक्शन आर्गुमेंट के रूप में लेते हैं जो सही या गलत लौटाता है। ऐसे फंक्शन को predicate कहते हैं।

ये पहले से मौजूद मेथड for लूप या पहले से मौजूद forEach मेथड की जगह इस्तेमाल करने के लिए बने हैं:

for लूप का उपयोग करके विश्लेषण का उदाहरण:

const numbers = [1, 'two', 3, 'four'];
for (var i = 0; i < numbers.length; i++) {
  if (numbers[i] === 'two') {
    return i;
  }
}
// => 1

पहले से मौजूद मेथड का उपयोग करके विश्लेषण का उदाहरण:

const numbers = [1, 'two', 3, 'four'];
numbers.indexOf('two');
// => 1

ऐरे का विश्लेषण करने के लिए उपलब्ध कुछ और उपयोगी पहले से मौजूद मेथड नीचे दिए गए हैं। ऐरे के सभी मेथड की पूरी सूची के लिए MDN देखिए।

includes

includes(value) मेथड यह तय करता है कि ऐरे में कोई खास वैल्यू मौजूद है या नहीं। अगर वैल्यू मौजूद हो तो यह true लौटाता है, वरना false।

const numbers = [1, 'two', 3, 'four'];
numbers.includes(1);
// => true
numbers.includes('one');
// => false

every

every(predicate) मेथड एक ऐसा फंक्शन लेता है जो एक प्रेडिकेट होता है। यह जाँचता है कि ऐरे के सारे एलिमेंट प्रेडिकेट को दिए जाने पर true लौटाते हैं या नहीं। दूसरे शब्दों में: यह मेथड जाँचता है कि उसके सारे एलिमेंट उस जाँच में पास होते हैं जो फंक्शन कॉल को दी गई थी। जब हर एलिमेंट प्रेडिकेट की जाँच में पास होता है तो यह true लौटाता है, वरना false।

const numbers = [1, 3, 5, 7, 9];
numbers.every((num) => num % 2 !== 0);
// => true

some

some(predicate) मेथड every मेथड जैसा ही है, लेकिन यह true लौटाता है अगर ऐरे में कम से कम एक एलिमेंट प्रेडिकेट की जाँच में पास हो।

const numbers = [1, 3, 5, 7, 9];
numbers.some((num) => num % 2 !== 0);
// => true

find

find(predicate) मेथड ऐरे के उस पहले एलिमेंट की वैल्यू लौटाता है जो predicate की जाँच में पास होता है। जहाँ some() पास होने पर true लौटाता है, वहाँ find() ऐरे में मौजूद असली वैल्यू लौटाता है। जब ऐरे का कोई भी एलिमेंट प्रेडिकेट की जाँच में पास नहीं होता, तो यह मेथड undefined लौटाता है।

const numbers = [1, 3, 5, 7, 9];
numbers.find((num) => num < 5);
// => 1

findIndex

findIndex(predicate) मेथड find() मेथड जैसा ही है, लेकिन यह value की जगह उस एलिमेंट का (पहला) इंडेक्स लौटाता है जो प्रेडिकेट की जाँच में पास होता है। जब ऐरे का कोई भी एलिमेंट प्रेडिकेट की जाँच में पास नहीं होता, तो यह मेथड -1 लौटाता है।

const numbers = [1, 3, 5, 7, 9];
numbers.findIndex((num) => num > 7);
// => 4
numbers.findIndex((num) => num > 9);
// => -1

निर्देश

भावी जादूगर एलिस अपना प्रशिक्षण जारी रखती है। उसे पत्तों के कई ढेर दिए जाएँगे, जिनका इस्तेमाल करके उसे अपने करतब दिखाने हैं। चीज़ें थोड़ी आसान करने के लिए वह सिर्फ 1 से 10 तक के पत्ते इस्तेमाल करती है।

इस अभ्यास में ऐरे के अंदर की चीज़ों का विश्लेषण करने के लिए बिल्ट-इन मेथड इस्तेमाल कीजिए।

1. पत्ते की जगह पता कीजिए

एलिस जानना चाहती है कि ढेर में किसी पत्ते की जगह (इंडेक्स) क्या है।

const card = 2;
getCardPosition([9, 7, 3, 2], card);
// => 3

2. पता कीजिए कि कोई पत्ता मौजूद है या नहीं

एलिस जानना चाहती है कि ढेर में कोई पत्ता मौजूद है या नहीं, यानी यह कि ढेर में कोई खास number है या नहीं।

const card = 3;
doesStackIncludeCard([2, 3, 4, 5], card);
// => true

3. पता कीजिए कि हर पत्ता सम है या नहीं

एलिस जानना चाहती है कि हर पत्ता सम है या नहीं, यानी यह कि ढेर में मौजूद हर संख्या एक सम number है या नहीं।

isEachCardEven([2, 4, 6, 7]);
// => false

4. जाँचिए कि ढेर में विषम वैल्यू वाला पत्ता है या नहीं

एलिस जानना चाहती है कि ढेर में कोई विषम संख्या है या नहीं।

doesStackIncludeOddCard([3, 2, 6, 4, 8]);
// => true

5. ढेर से पहला विषम पत्ता निकालिए

एलिस जानना चाहती है कि जो पहला पत्ता विषम है उसकी वैल्यू क्या है।

getFirstOddCard([4, 2, 8, 7, 9]);
// => 7

6. पहले सम पत्ते की जगह पता कीजिए

एलिस जानना चाहती है कि जो पहला पत्ता सम है उसकी जगह क्या है।

getFirstEvenCardPosition([5, 2, 3, 1]);
// => 1
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
JavaScript Exercism

Elyse के विश्लेषणात्मक जादू शुरू करने के लिए तैयार हैं?

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