Kurzusok
/
JavaScript
JavaScript
/
Feladatok
/
Ozan lejátszási listája
Ozan lejátszási listája

Ozan lejátszási listája

Tanulófeladat

Bevezetés

A JavaScriptben a halmaz egy listaszerű szerkezet, amely egyedi értékeket tartalmaz; ezek az értékek primitívek és/vagy objektumhivatkozások lehetnek. A tömbbel ellentétben egy halmaz elemeihez nem férhetsz hozzá index alapján.

Nem adhatsz hozzá a halmazhoz olyan értéket, amely szigorúan egyenlő a halmaz bármelyik elemével.

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

Egy halmaz létrehozásakor argumentumként megadhatsz egy tömböt, és ilyenkor a tömb értékei lesznek a halmaz értékei, az ismétlődő értékeket pedig eltávolítja.

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

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

Ha egy halmazt tömbbé szeretnél alakítani, használhatod az Array.from() metódust, amely egy iterálható objektumot, például egy halmazt vagy egy mapet tömbbé alakít.

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]

Utasítások

Ozan lejátszási listát állít össze egy közelgő kirándulásra. Nem szeretné ugyanazt a számot kétszer meghallgatni, a lista viszont olyan hosszúra nyúlt, hogy már alig emlékszik rá, mely számok kerültek már rá.

Ozan zenelejátszójának API-ja csak tömbökkel tud dolgozni, ezért megpróbál olyan kódot írni, amely a Array.indexOf() metódussal ellenőrzi, hogy egy szám szerepel-e már a listán, mielőtt hozzáadná. Sajnos a programja túl sokáig fut. Szüksége van a segítségedre!

Amikor Ozan segítségére sietsz, döbbenten látod, hogy a listáján félmillió szám van. Talán ismersz egy másik adatszerkezetet, amellyel hatékonyabban kezelheted a lejátszási listát?

1. Az ismétlődő számok eltávolítása

Valósítsd meg a removeDuplicates függvényt, amely egy lejátszási listát vesz át paraméterként, és egy új lejátszási listát ad vissza, amelyben minden szám egyedi.

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. Annak ellenőrzése, hogy egy számot már hozzáadtak-e

Valósítsd meg a hasTrack függvényt, amely egy lejátszási listát és egy számot vesz át paraméterként, és egy Boolean értéket ad vissza, amely megmutatja, hogy a lejátszási lista tartalmazza-e a számot.

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. Egy szám hozzáadása

Valósítsd meg az addTrack függvényt, amely egy lejátszási listát és egy számot vesz át paraméterként, és egy új lejátszási listát ad vissza, amely tartalmazza a számot.

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. Egy szám törlése

Valósítsd meg a deleteTrack függvényt, amely egy lejátszási listát és egy számot vesz át paraméterként, és egy új lejátszási listát ad vissza, amely nem tartalmazza a számot.

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. Az egyedi előadók listázása

Valósítsd meg a listArtists függvényt, amely egy lejátszási listát vesz át paraméterként, és visszaadja a lejátszási listán szereplő egyedi előadók listáját. Figyeld meg, hogy a számok nevei a következő formátumban vannak: <SONG> - <ARTIST>.

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

listArtists(playlist);
//=> ['Portishead', 'Devendra Banhart']
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
JavaScript Exercism

Készen állsz elkezdeni a(z) Ozan lejátszási listája feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) JavaScript nyelvet 37 fogalom159 feladat segítségével, valódi emberi mentorálással, mindez ingyen.