如何解决Javascript:计算数组中所有对象值的总和
[{"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"}];
let multiply = {A: 30,B: 10,C: 5,D: 2};
let result = input.reduce((sum,v) =>
sum + Object.values(v)[0] * multiply[Object.keys(v)[0]],0);
console.log(result);
减少数组,并通过对每个项目调用 Object.entries()
来解构生成的数组来获取键/值对。获取键的值,乘以当前值,然后加到累加器中。
const multi = { A: 30,D: 2 }
const fn = arr =>
arr.reduce((acc,item) => {
const [[k,v]] = Object.entries(item)
return acc + multi[k] * v
},0)
const arr = [{"A":"34"},{"B":"13"},{"C":"35"},{"D":"74"}]
const result = fn(arr)
console.log(result)
您可以使用 Object.entries
轻松实现此目的const arr = [{ A: "34" },{ B: "13" },{ C: "35" },{ D: "74" }];
const multiplier = {
A: 30,D: 2,};
const result = arr.reduce((acc,curr) => {
const [[key,value]] = Object.entries(curr);
return acc + multiplier[key] * parseInt(value);
},0);
console.log(result);
您可以创建一个字典来获取值应乘以的数字,如下所示: {"A":30,"B":13,"C":35,"D":74}
现在您可以遍历对象数组,并使用对象的键从字典中获取值:
const myArray = [{"A":"34"},{"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 array = [{"A":"34"},{"D":"74"}];
然后在一行中:
const outcome = array.map(element => map[Object.keys(element)[0]] * Object.values(element)[0]).reduce((acc,init) => acc + init,0)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。