/* * Die Weihnachtsvorbereitungen starten dieses Jahr sehr früh. * Da der Weihnachtsmann den Stress kurz vor Weihnachten * verringern will, startet er bereits jetzt mit der Auswertung * von Wunschzetteln, damit die Geschenke frühzeitig besorgt werden können. * * Die Elfen haben ihm geholfen und alle bereits bekannten Wünsche * in eine Textdatei zusammengefügt. * Der Text hat das Format: * * Vorname Nachmname: * - Wunsch 1 * - Wunsch 2 * - ... * Vorname2 Nachname2: * - Wunsch 3 * - Wunsch 4 * - ... * ... * * Um dem Weihnachtsmann zu helfen die Übersicht zu behalten, * wollen sie ein JavaScript Programm schreiben, das die Wunschliste * einliest und für den Weihnachtsmann besser durchsuchbar macht. * * Dafür bekommen Sie einen Auszug der Textdatei in der Variable wishlist: */let wishlist = `Maria Schmidt:- Kamera- SockenJohann Müller:- Kopfhörer- Buch- EinkaufsgutscheinSophie Wagner:- PuzzleMaximilian Becker:- Fußball- HandyhülleLaura Zimmermann:- Kochbuch- EinkaufsgutscheinFelix Schneider:- LautsprecherLea Hofmann:- Mantel- BuchJonas Meier:- Zeichenstifte- Streaming-AbonnementHannah Schulz:- EinkaufsgutscheinDavid Richter:- FernglasLena Berger:- GemäldeElias Keller:- Fahrradschloss- PowerbankSarah Schäfer:- KochkursJulia Koch:- ZeitschriftSimon Fischer:- TeeSophia Wolf:- Tagebuch- RomanPaula Braun:- EinkaufsgutscheinNico Herrmann:- TrikotLeonie Schmitz:- Yoga-Kurs- BuchTom Vogt:- Survival-KursLisa Hartmann:- SchmuckTim Bauer:- EinkaufsgutscheinEmily Kaiser:- E-ReaderMatthias Dietrich:- WhiskyAnna Lehmann:- Buntstifte- MalbuchChristian Wolff:- SchachMarie Schuster:- MassagePhilipp Kaiser:- AutoMia Brandt:- BastelnFinn Schulze:- FilmLuisa Hofmann:- PastaJonas Vogel:- SegeltourAmelie Krüger:- InlineskatesJulian Weiß:- FernglasLaura Sommer:- EinkaufsgutscheinBenjamin Werner:- SudokuSophie Schreiber:- FallschirmsprungMaximilian Neumann:- LautsprecherEmily Schmidt:- Garten- EinkaufsgutscheinAntonia Meyer:- Fotoalbum- DinnerPaul Winter:- Kompass- Survival-KursSarah Müller:- Notizbuch- StädtereiseDavid Richter:- Kochzeitschrift`;/* * Schreiben Sie eine Funktion readWishlist(text). * Der Parameter Text ist die bereits eingelesene Wunschliste als String. * Die Funktion liest den gesamten Text ein und speichert die Daten * in einem Array von Objekten. * Jedes Element in dem Array enthält den Namen der Person und wiederum * ein Array aller Wünsche der jeweiligen Person. * * Beispiel: * Für diesen eingelesenen Text * * Sarah Müller: * - Notizbuch * - Städtereise * * wird diese Datenstruktur ermittelt * * [ {name: "Sarah Müller", wishes: ["Notizbuch", "Städtereise"]} ] */function readWishlist(text) {}let people = readWishlist(wishlist);/* * Um die Personen in dieser Liste nun besser suchen zu können, * schreiben Sie eine Funktion findPerson(personName, people) * * Der erste Parameter - personName - ist der Name der gesuchten Person als String. * Der zweite Parameter - people - ist das von Ihnen mit der Funktion readWishlist * eingelesene Array aus Objekten. * * findPerson liefert das gesamte Objekt - inklusive Name und aller Wünsche - * der gesuchten Person zurück. * * Beispiel: * let p = findPerson("Sarah Müller", people); * console.log(p.name, p.wishes); // Sarah Müller [ 'Notizbuch', 'Städtereise' ] */function findPerson(personName, people) {}console.log("Exercise 1");console.log("----------");let n1 = "Emily Schmidt";let p1 = findPerson(n1, people);console.log(n1, p1.wishes);let n2 = "Johann Müller";let p2 = findPerson(n2, people);console.log(n2, p2.wishes);console.log();/* * Mit den Funktionen von oben haben Sie dem Weihnachtsmann bereits * stark geholfen einen besseren Überblick zu bewahren. * * Nachdem der Weihnachtsmann die Funktion ein wenig getestet hat kommt * er mit einem Feature-Request auf Sie zu. * * Die bisherige Datenstruktur erlaubt es dem Weihnachtsmann sehr gut * nach bestimmten Personen zu suchen und deren Wünsche zu sehen. * Für die Beschaffung der Geschenke ist das aber nicht optimal. * Da der Weihnachtsmann wissen möchte wie viele Exemplare der jeweiligen * Geschenke beschafft werden müssen wünscht er sich, dass sie die Wunschliste * in eine andere Datenstruktur einlesen. * Der Weihnachtsmann hätte gerne eine Map, wobei das Geschenk selbst der * Schlüssel der Map ist und der Wert ein Objekt, das angibt welche Personen * sich das Geschenk gewünscht haben und eine Gesamtanzahl der zu besorgenden Exemplare * angibt. * * Beispiel: * * Sarah Müller: * - Baldur's Gate 3 * Norbert Winkler: * - Baldur's Gate 3 * * let wishlist = {}; * wishlist["Baldur's Gate 3"] = { * people: ["Sarah Müller", "Norbert Winkler"], * count: 2 * }; * * Erstellen Sie die Funktion readWishes(text) die die Wunschliste * nun in die neue Struktur einliest. */function readWishes(text) {}let wishes = readWishes(wishlist);console.log("Exercise 2");console.log("----------");let w1 = "Einkaufsgutschein";let l1 = wishes[w1];console.log(w1, l1.people, l1.count);let w2 = "Kopfhörer";let l2 = wishes[w2];console.log(w2, l2.people, l2.count);console.log();/* * Die Elfen kommen ganz aufgeregt zum Weihnachtsmann. * Da sie immer wieder Fälle haben, wo sich Kinder * mehr als ein Exemplar desselben Geschenks wünschen * haben sie das Format der Textdatei eigenständig angepasst. * * Es ist jetzt möglich optional hinter einem Wunsch * anzugeben, wie oft man sich das jeweilige Geschenk wünscht. * * zB * - Socken 2x * * Sie bekommen wieder einen neuen Auszug der Datei: */let wishlistExtended = `Maria Schmidt:- Kamera- Socken 2xJohann Müller:- Kopfhörer- Buch- EinkaufsgutscheinSophie Wagner:- Puzzle 3xMaximilian Becker:- Fußball- Handyhülle 3xLaura Zimmermann:- Kochbuch 5x- EinkaufsgutscheinFelix Schneider:- LautsprecherLea Hofmann:- Mantel- BuchJonas Meier:- Zeichenstifte 64x- Streaming-AbonnementHannah Schulz:- EinkaufsgutscheinDavid Richter:- FernglasLena Berger:- GemäldeElias Keller:- Fahrradschloss- Powerbank 2xSarah Schäfer:- KochkursJulia Koch:- ZeitschriftSimon Fischer:- Tee 365xSophia Wolf:- Tagebuch- Roman 3xPaula Braun:- EinkaufsgutscheinNico Herrmann:- Trikot 5xLeonie Schmitz:- Yoga-Kurs- Buch 2x- Socken 7xTom Vogt:- Survival-KursLisa Hartmann:- Schmuck 3xTim Bauer:- EinkaufsgutscheinEmily Kaiser:- E-ReaderMatthias Dietrich:- Whisky 4xAnna Lehmann:- Buntstifte 23x- MalbuchChristian Wolff:- SchachMarie Schuster:- Massage 7xPhilipp Kaiser:- AutoMia Brandt:- BastelnFinn Schulze:- FilmLuisa Hofmann:- PastaJonas Vogel:- SegeltourAmelie Krüger:- InlineskatesJulian Weiß:- FernglasLaura Sommer:- EinkaufsgutscheinBenjamin Werner:- Sudoku 30xSophie Schreiber:- FallschirmsprungMaximilian Neumann:- LautsprecherEmily Schmidt:- Garten- EinkaufsgutscheinAntonia Meyer:- Fotoalbum 3x- DinnerPaul Winter:- Kompass- Survival-KursSarah Müller:- Notizbuch 3x- StädtereiseDavid Richter:- Kochzeitschrift 4x`;/* * Schreiben Sie eine neue Funkiton readWishesExtended(text) * die das neue Textformat nun einliest. * * Passen Sie dabei auch die Datenstruktur an, sodass auch nachvollziehbar * ist, von wem wie viele der gewünschten Exemplare gewünscht wurden. * * Beispiel: * Maria Schmidt: * - Socken 2x * Leonie Schmitz: * - Socken 7x * * let wishlist = {}; * wishlist["Socken"] = { * people: [ * { * name: "Maria Schmidt", * count: 2 * }, { * name: "Leonie Schmitz", * count: 7 * } * ], * count: 9 * }; */function readWishesExtended(text) {}let wishesExtended = readWishesExtended(wishlistExtended);console.log("Exercise 3");console.log("----------");let wx1 = "Zeichenstifte";let lx1 = wishesExtended[wx1];console.log(wx1, lx1.people, lx1.count);let wx2 = "Socken";let lx2 = wishesExtended[wx2];console.log(wx2, lx2.people, lx2.count);