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

Trying to wrap a reduce function in another function so as to make it more general

我的对象是这样的:

 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)
}

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

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

party1 是问题所在。这里:

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