Objects 🗂️
Der letzte composite Datentyp, den wir uns anschauen, sind Objekte / Objects.
Bisher konnten wir in Variablen oder in Arrays immer nur einzelne Strings, Numbers oder Booleans benutzen. Manchmal möchte man aber mehrere solcher Werte als ein Paket behandeln. Stell dir vor, du willst Daten über eine Person speichern: ihr Alter, ihren Namen und ihre Größe in cm. Bisher müsstest du das so tun:
const age = 42
const name = "Lara Smith"
const height = 162
Wenn man jetzt mehrere solcher Personen abspeichern und z.B. eine Funktion schreiben will, die etwas mit so einer Person macht, wird’s schnell unübersichtlich — viele Variablen, viele Parameter, und man muss im Kopf behalten, was zusammengehört.
Syntax
Für solche Fälle, in denen mehrere Werte zusammengehören und eigentlich “eine Sache” sind, gibt es Objekte. Objekte erlauben es, beliebig viele Werte zu einem einzigen Wert zusammenzufassen.
Ein Objekt besteht aus beliebig vielen sogenannten Feldern (engl. Fields
oder Properties). Ein Feld hat einen Namen und einen Wert, ein bisschen
wie eine Variable. Man schreibt ein Objekt zwischen geschweifte Klammern {} mit
den Feldern als <name>: <wert>-Paare, jeweils durch Kommas getrennt. Auf einzelne
Felder greifst du mit der Punkt-Notation zu: objekt.feld.
📌 Geschwungene Klammern: Bisher haben
{}immer Codeblöcke markiert, die ausgeführt werden und einen lokalen Scope haben. Die geschweiften Klammern um Objekte tun das nicht — sie beschreiben, ähnlich wie die eckigen Klammern[]um Arrays, nur einen Wert.
Mutation — Felder ändern und hinzufügen
Felder lassen sich mit = überschreiben oder neu hinzufügen — auch wenn
das Object mit const deklariert wurde. (Das const schützt nur die Variable
davor, ein anderes Object zu sein, nicht die Inhalte.)
Eckige-Klammern-Notation
Statt objekt.feld kannst du auch objekt["feld"] schreiben. Das ist hilfreich,
wenn der Feldname dynamisch in einer Variable steckt.
Composition — Objects in Objects
Felder können alle Arten von Werten enthalten — auch andere Objects oder Arrays. Damit kannst du beliebig komplexe Datenstrukturen bauen.
Damit kannst du z.B. ganze Datenbanken im Speicher modellieren — ein Array aus Person-Objekten, jedes mit verschachtelten Adress- oder Bestellungs-Objekten.
Übung 🎯 — analyzeGrades
Schreib eine exportierte Funktion analyzeGrades(report), die einen Array aus
Objekten entgegennimmt, die Schulfächer mit Noten auf einem Zeugnis repräsentieren,
und ein Objekt mit einer Zusammenfassung des Zeugnisses zurückgibt.
Jedes Objekt im Eingabe-Array hat folgendes Format:
{
// String, der das Fach angibt
subject: "Deutsch",
// Zahl, die die Note angibt (2.3 = 2-, 1.7 = 2+, 2.0 = 2)
grade: 2.3,
}
Gib ein Objekt im folgenden Format zurück:
{
// Durchschnittsnote aller Fächer
averageGrade: 2.43,
// Bestes Fach (das ganze Objekt — niedrigste Note ist die beste)
bestSubject: {
subject: "Deutsch",
grade: 1.7,
},
}
💡 Tipp anzeigen
- Iteriere mit
for ofdurch den Array. - Sammele die Summe der Noten und merk dir dabei das Objekt mit der bisher niedrigsten Note.
- Am Ende
summe / report.lengthfür den Durchschnitt. - Gib ein neues Objekt zurück:
return { averageGrade: ..., bestSubject: ... }.
Geschafft! 🚀🎉
Damit hast du alle drei Kapitel des Kurses durch! Du beherrschst:
- Objects als zusammengesetzte Datenstruktur mit benannten Feldern
- Mutation und dynamische Felder
- Composition — verschachtelte Objects und Arrays
Und insgesamt aus dem Kurs:
- Variablen, Datentypen, Operatoren
- Kommentare, Conditionals, Loops, Scopes, Functions
- Arrays, String-Builtins, Objects
Du bist bereit für die HSAKA! 🌞
← Zurück zur Übersicht — vergiss nicht, dort deinen Fortschritt als Link zu teilen.