I am trying to do a simple Backpack class to review objects with vanilla javascript. While doing so, I've run into a block because I am unable to create a proper AddItem method or get my decrementItem method to work either.
My code is below:
class Backpack {
constructor(name) {
this.name = name;
this.items = {};
}
name() {
return `My backpack's name is ${this.name}`;
}
addItem(i, value) {
return this.items[i] ? (this.items[i] += value) : (this.items[i] = 1);
}
decrementItem(i) {
if (this.items[i]) {
}
return this.items[i] ? this.items[i]-- : (this.items[i] = 0);
}
}
let newBackpack = new Backpack("Bacon");
newBackpack.addItem("pencil", 3);
newBackpack.addItem("book");
newBackpack.addItem("pen");
newBackpack.addItem("paper");
console.log(newBackpack.items);
I am also curious as to how I could add validation to my decrementItem method to check to see if a value doesn't go negative as that would cause some issues.
You could add these changes:
iis often used in loops to refer to numeric indexes. It's not immediately clear that you use it for item names. Naming this variableitemmight make more sense.addItem, when there is no such item to start with, you always add1, discarding the passedvalue. Make sure to add the valueaddItem,valueseems to be an optional argument. You could add a default value of1this.items[item] || 0Math.max(n, 0)would allow you to make sure no value goes below zero