如何使用JavaScript类增加和减少对象中的值?

如何使用JavaScript类增加和减少对象中的值?,javascript,nan,object-notation,Javascript,Nan,Object Notation,我正在尝试使用一个简单的背包类来查看带有普通javascript的对象。在执行此操作时,我遇到了一个块,因为我无法创建适当的AddItem方法或使decrementItem方法工作 我的代码如下: 背包{ 构造器名称{ this.name=名称; this.items={}; } 名字{ return`我的背包的名字是${this.name}`; } 附加值{ 返回this.items[i]?this.items[i]+=值:this.items[i]=1; } 递减率{ 如有必要,请参见第[

我正在尝试使用一个简单的背包类来查看带有普通javascript的对象。在执行此操作时,我遇到了一个块,因为我无法创建适当的AddItem方法或使decrementItem方法工作

我的代码如下:

背包{ 构造器名称{ this.name=名称; this.items={}; } 名字{ return`我的背包的名字是${this.name}`; } 附加值{ 返回this.items[i]?this.items[i]+=值:this.items[i]=1; } 递减率{ 如有必要,请参见第[i]项{ } 返回this.items[i]?this.items[i]:this.items[i]=0; } } 让newBackpack=newBackpack; newBackpack.addItempencil,3; newBackpack.addItembook; newBackpack.addItempen; newBackpack.additepaper;
console.lognewBackpack.items 您可以添加以下更改:

i经常在循环中用于引用数值索引。现在还不清楚是否将其用于项目名称。命名此变量项可能更有意义。 此外,如果没有这样的项开始,则始终添加1,放弃传递的值。确保添加值 此外,value似乎是一个可选参数。您可以添加默认值1 更改数量时,您可以使用此速记来确保使用了上一个值,如果没有或已经为零,则为零:this.items[item]| | 0 maxn,0将允许您确保没有值低于零 背包{ 构造器名称{ this.name=名称; this.items={}; } 名字{ return`我的背包的名字是${this.name}`; } AddItem,如果未提供,默认值为1{//1 返回this.items[item]=this.items[item]| | 0+value;//添加值 } 递减率{ 返回this.items[item]=Math.maxthis.items[item]||0-1,0;//0最小值 } } 让newBackpack=newBackpack; newBackpack.addItempencil,3; newBackpack.decrementampencil; newBackpack.addItembook; newBackpack.addItempen; newBackpack.additepaper;
console.lognewBackpack.items 您可以添加以下更改:

i经常在循环中用于引用数值索引。现在还不清楚是否将其用于项目名称。命名此变量项可能更有意义。 此外,如果没有这样的项开始,则始终添加1,放弃传递的值。确保添加值 此外,value似乎是一个可选参数。您可以添加默认值1 更改数量时,您可以使用此速记来确保使用了上一个值,如果没有或已经为零,则为零:this.items[item]| | 0 maxn,0将允许您确保没有值低于零 背包{ 构造器名称{ this.name=名称; this.items={}; } 名字{ return`我的背包的名字是${this.name}`; } AddItem,如果未提供,默认值为1{//1 返回this.items[item]=this.items[item]| | 0+value;//添加值 } 递减率{ 返回this.items[item]=Math.maxthis.items[item]||0-1,0;//0最小值 } } 让newBackpack=newBackpack; newBackpack.addItempencil,3; newBackpack.decrementampencil; newBackpack.addItembook; newBackpack.addItempen; newBackpack.additepaper;
console.lognewBackpack.items 必须首先将项保存到构造函数

class Backpack {
  constructor(name) {
    this.name = name;
    this.items = {};
  }

  name() {
    return `My backpack's name is ${this.name}`;
  }

  addItem(i, value) {
    this.items[i] = value ? value : 1;
  }

  decrementItem(i) {
    if (this.items[i]) {
      this.items[i] = this.items[i] - 1;
    } else {
      console.log(`Item not found !!`);
    }
  }
}

let newBackpack = new Backpack("Bacon");

newBackpack.addItem("pencil", 3);
newBackpack.addItem("book");
newBackpack.addItem("pen");
newBackpack.addItem("paper");

newBackpack.decrementItem("pencil");

console.log(newBackpack.items);

必须首先将项保存到构造函数

class Backpack {
  constructor(name) {
    this.name = name;
    this.items = {};
  }

  name() {
    return `My backpack's name is ${this.name}`;
  }

  addItem(i, value) {
    this.items[i] = value ? value : 1;
  }

  decrementItem(i) {
    if (this.items[i]) {
      this.items[i] = this.items[i] - 1;
    } else {
      console.log(`Item not found !!`);
    }
  }
}

let newBackpack = new Backpack("Bacon");

newBackpack.addItem("pencil", 3);
newBackpack.addItem("book");
newBackpack.addItem("pen");
newBackpack.addItem("paper");

newBackpack.decrementItem("pencil");

console.log(newBackpack.items);

我想这可能适合你的面试

背包{ 构造器名称{ this.name=name this.items={} this.removietem=functionitem{ item=item.toLowerCase ifthis.items[item]{deleteThes.items[item]} 否则{throw error无法删除不存在的属性+项} } this.minusItem=函数项,编号{ item=item.toLowerCase 如果此.items[item]{this.items[item]=number | | 1} else{throw error不能从不存在的属性+项中减去} } this.addItem=函数项,编号{ item=item.toLowerCase 如果此.items[item]{this.items[item]+=number | | 1} else{this.items[项目]=编号| | 1} } this.getCountOfItems=functionitem{ item=item.toLowerCase 返回此。项[项]| |空 } } } 让newBackpack=newBackpack; 新包装。addItempencil,3; 新包装。addItempencil,5; 新背包。铅笔,2支; newBackpack.addItembook; newBackpack.addItempen; newBackpack.additepaper; console.lognewBackpack.items; console.lognewBackpack.getCountOfItemspencil//6 console.lognewBackpack.getCountOfItemslunchbox//null表示它不存在 试试{newBackpack.minusItem午餐盒,2} catcherr{console.errorerr.message} 请尝试{console.lognewBackpack.removitemluntbox}
catcherr{console.errorerr.message}我想这可能适合你的面试

背包{ 构造器名称{ this.name=name this.items={} this.removietem=functionitem{ item=item.toLowerCase 如果此.items[项]{deletetetThi s、 项目[项目]} 否则{throw error无法删除不存在的属性+项} } this.minusItem=函数项,编号{ item=item.toLowerCase 如果此.items[item]{this.items[item]=number | | 1} else{throw error不能从不存在的属性+项中减去} } this.addItem=函数项,编号{ item=item.toLowerCase 如果此.items[item]{this.items[item]+=number | | 1} else{this.items[项目]=编号| | 1} } this.getCountOfItems=functionitem{ item=item.toLowerCase 返回此。项[项]| |空 } } } 让newBackpack=newBackpack; 新包装。addItempencil,3; 新包装。addItempencil,5; 新背包。铅笔,2支; newBackpack.addItembook; newBackpack.addItempen; newBackpack.additepaper; console.lognewBackpack.items; console.lognewBackpack.getCountOfItemspencil//6 console.lognewBackpack.getCountOfItemslunchbox//null表示它不存在 试试{newBackpack.minusItem午餐盒,2} catcherr{console.errorerr.message} 请尝试{console.lognewBackpack.removitemluntbox}
catcherr{console.errorerr.message}您需要将项目存储在对象中吗?或者你可以使用一个简单的数组?我正在尝试为一个练习面试问题创建对象。当你将值3传递给addItem时,你的意图是什么?你是否关心索引3中是否已经有一个项目?你关心下面3个索引中的项目吗?为什么不检查下一个可用索引,然后在该索引处添加项目,而不是尝试手动跟踪索引?是否需要将项目存储在对象中?或者你可以使用一个简单的数组?我正在尝试为一个练习面试问题创建对象。当你将值3传递给addItem时,你的意图是什么?你是否关心索引3中是否已经有一个项目?你关心下面3个索引中的项目吗?为什么不检查下一个可用索引,然后在该索引处添加项,而不是尝试手动跟踪索引?