我想声明该类中对象的值,并且仅在Im声明一个新类时才调用键。我该怎么办?

问题描述 投票:-1回答:1

这是我到目前为止所做的。

class PriceCalc {
  constructor(Obj) {
    this.parts = Object.keys(Obj);
    this.cost =
      "$" +
      Object.values(Obj)
        .reduce((a, b) => a + b, 0)
        .toFixed(2);
    this.retail =
      "$" +
      (
        Object.values(Obj).reduce((a, b) => a + b, 0) +
        Object.values(Obj).reduce((a, b) => a + b, 0) * 1.75
      ).toFixed(2);
    this.quote = qt + this.retail;
  }
}
var total = new PriceCalc({
  Motherboard: 520.99,
  RAM: 250.4,
  SSD: 500.8,
  HDD: 400.66,
  Case: 375.5,
  Monitor: 600.75,
  Keyboard: 100.99,
  Mouse: 25.5
});
console.log(total.parts);
console.log(total.cost);
console.log(total.retail);
console.log(total.quote);

Id想要实现的是在类中声明值,然后仅调用类似的东西

var total = new PriceCalc({Motherboard, RAM, SSD, HDD});

并返回指定零件的组合值,在这种情况下,对于this.cost为$ 1,672.85

javascript class object key-value
1个回答
0
投票
  1. 将默认值放入类属性。
  2. 传递要获取的属性字符串。
  3. 使用this[b]获取对象属性
  4. 确保您汇总数字而不是字符串:qt + this.quote将为您提供字符串连接,而不是算术运算。

class PriceCalc {
  Motherboard = 520.99;
  RAM = 250.40;
  SSD = 500.80;
  HDD = 400.66;
  Case = 375.50;
  Monitor = 600.75;
  Keyboard = 100.99;
  Mouse = 25.50;
  
  parts = []
  cost = '$0'
  retail = '$0'
  quote = '0'

  constructor(Obj) {
    this.parts = Obj.join(',');
    this.cost = "$" + (Obj.reduce((a, b) => a + this[b], 0).toFixed(2));
    this.retail = "$" + ((Obj.reduce((a, b) => a + this[b], 0) + (Obj.reduce((a, b) => a + this[b], 0) * 1.75)).toFixed(2));
    //this.quote = qt + this.retail;
  }
}

var total = new PriceCalc([
  'Motherboard',
  'RAM',
  'SSD',
  'HDD'
]);

console.log(total.parts)
console.log(total.cost)
console.log(total.retail)
console.log(total.quote)
© www.soinside.com 2019 - 2024. All rights reserved.