如何在Javascript中的对象数组内计算值?

时间:2019-06-18 02:15:56

标签: javascript arrays json object

我有一个javascript对象数组,我想创建一个key:value对,它是两个值的乘积。

我可以使用对象外部更长的代码来解决此问题(即在“ for each”循环中),但我认为必须有一种更简单的方法。也许您可以为我指明正确的方向?

let DB = [
    {
      number: 100,
      factor: 1.5
      product: this.number * this.factor // doesn't work :(
    },
    {
      ...
    }
  ];

我希望乘积等于150,即100 * 1.5,但我不知道如何访问这两个值。

3 个答案:

答案 0 :(得分:1)

您无法在数组内执行此操作,但是使用映射很容易解决。

[ { number: 100, factor: 1.5}].map(element => ({...element, product: element.number * element.factor}));

.map()遍历数组,并创建一个新数组,每个元素都是传入函数的结果。

...被散布,它采用原始对象中的所有属性,并将它们放到您要制作的新对象上。

答案 1 :(得分:0)

或简单地:(因为map方法创建了一个新数组,否则请使用forEach方法)

let DB = [ { number: 100, factor: 1.5 }
         , { number: 100, factor: 1.2 }
         ];

for (let db of DB ) { db.product = db.number * db.factor }


/// verify =
for (let db of DB ) console.log( JSON.stringify(db))

答案 2 :(得分:0)

如果要在对象内部进行计算,可以尝试使用此处所述的吸气剂: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get

x = { 
  number: 100, 
  factor: 1.5, 
  get product() { return this.number * this.factor} 
 }
 
console.log(x.product)