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:
i
is often used in loops to refer to numeric indexes. It's not immediately clear that you use it for item names. Naming this variableitem
might 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
,value
seems to be an optional argument. You could add a default value of1
this.items[item] || 0
Math.max(n, 0)
would allow you to make sure no value goes below zero