ट्रैक
/
JavaScript
JavaScript
/
अभ्यास
/
Ozan की प्लेलिस्ट
Ozan की प्लेलिस्ट

Ozan की प्लेलिस्ट

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

परिचय

JavaScript में सेट एक ऐरे जैसी संरचना होती है, जिसमें हर वैल्यू अलग होती है। ये वैल्यू प्रिमिटिव भी हो सकती हैं और ऑब्जेक्ट रेफ़रेंस भी। ऐरे के विपरीत, सेट के एलिमेंट तक इंडेक्स से नहीं पहुँचा जा सकता।

अगर कोई वैल्यू सेट के किसी भी एलिमेंट से पूर्ण रूप से समान है, तो वह उस सेट में नहीं जोड़ी जा सकती।

const set = new Set();
const object = { color: 'lime green' };
const functionallyIdenticalObject = { color: 'lime green' };

set.add(object);
set.add('wow');
set.add(77);

console.log(set.size);
//=> 3

set.add(functionallyIdenticalObject); // added because functionallyIdenticalObject is not strictly equal to object
console.log(set.size);
//=> 4

set.add(77); // not added because 77 is strictly equal to 77
console.log(set.size);
//=> 4

सेट बनाते समय आप उसमें एक ऐरे आर्गुमेंट के रूप में दे सकते हैं। ऐसा करने पर ऐरे की वैल्यू ही सेट की वैल्यू बन जाती हैं, और दोहराई गई वैल्यू भी हट जाती हैं।

const array = [1, 5, 4, 1];
const set = new Set(array); // the set's values become [1, 5, 4]

console.log(set.size);
//=> 3

किसी सेट को ऐरे में बदलने के लिए आप Array.from() का उपयोग कर सकते हैं। यह सेट या मैप जैसी किसी भी इटरेबल चीज़ को ऐरे में बदल देता है।

const set = new Set();

set.add(1);
set.add(2);
set.add(3);
set.add(4);

const array = Array.from(set);
console.log(array);
//=> [1, 2, 3, 4]

निर्देश

ओज़ान एक आने वाली रोड ट्रिप के लिए प्लेलिस्ट तैयार कर रहा है। वह एक ही ट्रैक को एक से अधिक बार नहीं सुनना चाहता, लेकिन प्लेलिस्ट इतनी लंबी हो चुकी है कि उसे यह याद रखने में परेशानी हो रही है कि कौन-से ट्रैक पहले ही जोड़े जा चुके हैं।

ओज़ान के म्यूज़िक प्लेयर का API सिर्फ ऐरे के साथ काम करना जानता है, इसलिए वह कुछ कोड लिखने की कोशिश करता है जो Array.indexOf() का उपयोग करके ट्रैक को प्लेलिस्ट में जोड़ने से पहले यह जाँचता है कि वह पहले से मौजूद है या नहीं। दुर्भाग्य से, उसके प्रोग्राम को चलने में बहुत ज़्यादा समय लगता है। उसे आपकी मदद चाहिए!

ओज़ान की मदद करने पहुँचने पर आपको यह देखकर हैरानी होती है कि उसकी प्लेलिस्ट में पाँच लाख ट्रैक हैं। शायद आप किसी ऐसे दूसरे डेटा स्ट्रक्चर के बारे में जानते हैं जिससे आप प्लेलिस्ट को ज़्यादा कुशलता से संभाल सकें?

1. डुप्लिकेट ट्रैक हटाइए

removeDuplicates फंक्शन बनाइए, जो एक प्लेलिस्ट को पैरामीटर के रूप में लेता है और एक नई प्लेलिस्ट लौटाता है जिसमें सारे ट्रैक अनोखे हों।

const playlist = [
  'Court and Spark - Joni Mitchell',
  'Big Yellow Taxi - Joni Mitchell',
  'Court and Spark - Joni Mitchell',
];

removeDuplicates(playlist);
//=> ['Court and Spark - Joni Mitchell', 'Big Yellow Taxi - Joni Mitchell']

2. जाँचिए कि कोई ट्रैक पहले ही जोड़ा जा चुका है या नहीं

hasTrack फंक्शन बनाइए, जो एक प्लेलिस्ट और एक ट्रैक को पैरामीटर के रूप में लेता है और एक बूलियन लौटाता है जो बताता है कि प्लेलिस्ट में वह ट्रैक मौजूद है या नहीं।

const playlist = [
  'The Fashion Show - Grace Jones',
  'Dr. Funkenstein - Parliament',
];

hasTrack(playlist, 'Dr. Funkenstein - Parliament');
//=> true

hasTrack(playlist, 'Walking in the Rain - Grace Jones');
//=> false

3. एक ट्रैक जोड़िए

addTrack फंक्शन बनाइए, जो एक प्लेलिस्ट और एक ट्रैक को पैरामीटर के रूप में लेता है और एक नई प्लेलिस्ट लौटाता है जिसमें वह ट्रैक शामिल होता है।

const playlist = ['Selma - Bijelo Dugme'];

addTrack(playlist, 'Atomic Dog - George Clinton');
//=> ['Selma - Bijelo Dugme', 'Atomic Dog - George Clinton']

addTrack(playlist, 'Selma - Bijelo Dugme');
//=> ['Selma - Bijelo Dugme', 'Atomic Dog - George Clinton']

4. एक ट्रैक हटाइए

deleteTrack फंक्शन बनाइए, जो एक प्लेलिस्ट और एक ट्रैक को पैरामीटर के रूप में लेता है और एक नई प्लेलिस्ट लौटाता है जिसमें वह ट्रैक शामिल नहीं होता।

const playlist = [
  'The Treasure - Fra Lippo Lippi',
  'After the Fall - Klaus Nomi',
];

deleteTrack(playlist, 'The Treasure - Fra Lippo Lippi');
//=> ['After the Fall - Klaus Nomi']

deleteTrack(playlist, 'I Feel the Magic - Belinda Carlisle');
//=> ['After the Fall - Klaus Nomi']

5. अनोखे कलाकारों की सूची बनाइए

listArtists फंक्शन बनाइए, जो एक प्लेलिस्ट को पैरामीटर के रूप में लेता है और प्लेलिस्ट के अनोखे कलाकारों की सूची लौटाता है। ध्यान दीजिए कि ट्रैकों के नाम <SONG> - <ARTIST> के रूप में होते हैं।

const playlist = [
  'All Mine - Portishead',
  'Sight to Behold - Devendra Banhart',
  'Sour Times - Portishead',
];

listArtists(playlist);
//=> ['Portishead', 'Devendra Banhart']
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
JavaScript Exercism

Ozan की प्लेलिस्ट शुरू करने के लिए तैयार हैं?

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