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

我的对象如下所示:


 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)

}


慕码人2483693
浏览 101回答 2
2回答

哈士奇WWW

派对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);

Cats萌萌

您可以通过使用完整参数来完成此操作,Object.values而不是尝试在回调中立即解构。function partyTally(myParty){   return Object.values(electionResults).reduce((t, constituencyResults) => t + +constituencyResults[myParty], 0)   }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript