Javascript:计算数组中所有对象值的总和

Javascript:计算数组中所有对象值的总和,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我有一个对象数组,如下所示 [{"A":"34"},{"B":"13"},{"C":"35"},{"D":"74"}] 如果键是A,它的值必须乘以30,B乘以10,C乘以5,D乘以2。我想计算乘法后的总和 34*30 + 13*10 + 35*5 + 74*2 除了if/else语句之外,还有其他方法可以实现这一点吗?谢谢 let

我有一个对象数组,如下所示

[{"A":"34"},{"B":"13"},{"C":"35"},{"D":"74"}]
如果键是A,它的值必须乘以30,B乘以10,C乘以5,D乘以2。我想计算乘法后的总和

34*30 + 13*10 + 35*5 + 74*2
除了if/else语句之外,还有其他方法可以实现这一点吗?谢谢

let input=[{“A”:“34”},{“B”:“13”},{“C”:“35”},{“D”:“74”}];
让乘法={A:30,B:10,C:5,D:2};
让结果=输入。减少((和,v)=>
sum+Object.values(v)[0]*乘以[Object.keys(v)[0]],0);

控制台日志(结果)减少数组,并通过对每个项调用
Object.entries()
来对数组进行分解,从而获得密钥/值对。获取键的值,乘以当前值,并将其加到累加器中

constmulti={A:30,B:10,C:5,D:2}
常数fn=arr=>
arr.reduce((附件,项目)=>{
常量[[k,v]]=对象项(项)
返回acc+多[k]*v
}, 0)
常量arr=[{“A”:“34”},{“B”:“13”},{“C”:“35”},{“D”:“74”}]
常数结果=fn(arr)

console.log(result)
您可以使用

const arr=[{A:34},{B:13},{C:35},{D:74}];
常数乘数={
A:30,
B:10,
C:5,
D:2,
};
const result=arr.reduce((acc,curr)=>{
常量[[key,value]]=Object.entries(curr);
返回acc+乘法器[键]*parseInt(值);
}, 0);

控制台日志(结果)您可以创建一个字典,以获取值应与之相乘的数字,如图所示: {“A”:30,“B”:13,“C”:35,“D”:74}

现在,您可以在对象数组中循环,并使用对象的键从字典中获取值:

const myArray = [{"A":"34"},{"B":"13"},{"C":"35"},{"D":"74"}]
const Nums = {"A":30, "B":10, "C":5, "D":2};
let Result = 0;

myArray.forEach((item)=>{
  const key = Object.keys(item)[0];
  var temp= parseInt(item[key]);
  Result += temp*Nums[key];
})
console.log(Result);

不确定如何映射值,以便
“A”==30
。但假设你有一张地图:

const map = {
  "A": 30,
  "B": 10,
  "C": 5,
  "D": 2
}
const数组=[{“A”:“34”},{“B”:“13”},{“C”:“35”},{“D”:“74”}]

然后在一行中:

const outcome = array.map(element => map[Object.keys(element)[0]] * Object.values(element)[0]).reduce((acc, init) => acc + init, 0)

同样的想法和同样的解决方案。在我发布我的解决方案后,我看到了你的解决方案。谢谢你,这个解决方案非常有效!不客气:)