尝试将 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);
我的对象是这样的:
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);