微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。