Eigenschaften in eckigen Klammern
Es gibt noch eine andere Möglichkeit, eine Eigenschaft zu lesen: eckige Klammern mit dem Schlüssel in Anführungszeichen.
const lager = {
birnen: 12,
zitronen: 0,
pfirsiche: 30
};
console.log(lager["pfirsiche"]);30lager["pfirsiche"] bedeutet dasselbe wie lager.pfirsiche; es ist nur länger. Warum also benutzt man es? Weil du in die Klammern einen beliebigen Wert setzen kannst, auch eine Variable. Dann musst du den Schlüssel beim Schreiben des Programms nicht kennen:
const lager = { birnen: 12, zitronen: 0, pfirsiche: 30 };
const obst = "birnen";
console.log(lager[obst]);12JavaScript schaut zuerst in die Variable obst, findet dort den Text "birnen" und liest dann die Eigenschaft birnen. Am nützlichsten ist das in Funktionen, in denen der Schlüssel als Argument ankommt:
const lager = { birnen: 12, zitronen: 0, pfirsiche: 30 };
function istAufLager(obst) {
return lager[obst] > 0;
}
console.log(istAufLager("birnen"));
console.log(istAufLager("zitronen"));true
falseJeder Aufruf liest eine andere Eigenschaft, und die Funktion funktioniert für jedes Obst, auch für eines, das du dem Objekt später hinzufügst.
Typische Fehler:
lager.obstschaut nicht in die Variableobst. Es sucht eine Eigenschaft mit dem Schlüsselobst, findet keine, und du bekommstundefined. Dasselbe passiert beilager["obst"]: In Anführungszeichen ist"obst"nur ein Text, nicht die Variable.lager[birnen]ohne Anführungszeichen sucht eine Variablebirnen, die es nicht gibt:ReferenceError: birnen is not defined.
Also: Wenn du den Schlüssel beim Schreiben des Codes kennst, benutze einen Punkt. Wenn der Schlüssel in einer Variable steht, benutze eckige Klammern, ohne Anführungszeichen. Eckige Klammern funktionieren auch zum Ändern von Werten: lager[obst] = 5;.
So schreibst du es:
Anweisungen
- 1
Die Funktion
gibLagerAussoll ausgeben, wie viele Stück des angegebenen Obsts auf Lager sind, aber sie gibtundefinedaus. Korrigiere sie, sodass die ersten beiden Zeilenbirnen: 12undpfirsiche: 30lauten. - 2
Vervollständige die Funktion
verkaufe: Sie soll den Lagerbestand des angegebenen Obsts um 1 verringern. Das Programm verkauft zwei Pfirsiche und eine Birne, also sollten die letzten beiden Zeilen dannpfirsiche: 28undbirnen: 11lauten.