* 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:
* 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:
* 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.
* Für diesen eingelesenen Text
* 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.
* 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);
* 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
* wishlist["Baldur's Gate 3"] = {
* people: ["Sarah Müller", "Norbert Winkler"],
* 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";
console.log(w1, l1.people, l1.count);
console.log(w2, l2.people, l2.count);
* 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.
* Sie bekommen wieder einen neuen Auszug der Datei:
let wishlistExtended = `Maria Schmidt:
* 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.
* name: "Leonie Schmitz",
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 lx2 = wishesExtended[wx2];
console.log(wx2, lx2.people, lx2.count);