为了账号安全,请及时绑定邮箱和手机立即绑定

试图将reduce函数包装在另一个函数中以使其更通用

试图将reduce函数包装在另一个函数中以使其更通用

慕码人2483693 2022-11-03 10:01:45
我的对象如下所示: electionResults = {  constituency_1:{    party1:'200',    party2:'400'    ...  },  constituency_2:{    party1:'100',    party2:'500'    ...  },  ...}我正在统计这样的结果:Object.values(electionResults).reduce((t, {party1}) => t + +party1, 0)我希望能够像这样包装它:function partyTally(myParty){   return Object.values(electionResults).reduce((t, myParty) => t + +party1, 0)}但无法弄清楚如何传递myParty给reduce回调函数。我自己从 tsv 文件创建了对象,因此可以在需要时轻松重新配置它。提前感谢您的帮助。编辑所需功能应为:function partyTally(myParty){   return Object.values(electionResults).reduce((t, myParty) => t + +**myParty**, 0)}
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

派对1是问题所在。这里:


function partyTally(myParty){

  return Object.values(electionResults).reduce((t, c) => t + Number(c[myParty]), 0)

}

例如,通过“party1”。


这是一次统计所有选区的所有政党的方法:


electionResults = {

  "constituency_1": {

    "party1": "200",

    "party2": "400"

  },

  "constituency_2": {

    "party1": "100",

    "party2": "500"

  }

};


partiesTally = Object.values(electionResults).reduce((result, constituency) => {

  Object.keys(constituency).forEach(party => {

    if(result[party]==undefined) result[party]=0;

    result[party]+=(+constituency[party]);

  });

  return result;

},{});


console.log(partiesTally);


查看完整回答
反对 回复 2022-11-03
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您可以通过使用完整参数来完成此操作,Object.values而不是尝试在回调中立即解构。

function partyTally(myParty){
  return Object.values(electionResults).reduce((t, constituencyResults) => t + +constituencyResults[myParty], 0)
  }


查看完整回答
反对 回复 2022-11-03
  • 2 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号