我有一个javascript对象数组,我想创建一个key:value对,它是两个值的乘积。
我可以使用对象外部更长的代码来解决此问题(即在“ for each”循环中),但我认为必须有一种更简单的方法。也许您可以为我指明正确的方向?
let DB = [
{
number: 100,
factor: 1.5
product: this.number * this.factor // doesn't work :(
},
{
...
}
];
我希望乘积等于150,即100 * 1.5,但我不知道如何访问这两个值。
答案 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)