Javascript Typescript/lodash:如何获得具有多个公共属性的结果/对象
我正在为具有多个属性的groupBy函数寻找lodash/typerscript解决方案。 以下是我迄今为止所尝试的: JSON: 打字脚本代码:Javascript Typescript/lodash:如何获得具有多个公共属性的结果/对象,javascript,typescript,filter,group-by,lodash,Javascript,Typescript,Filter,Group By,Lodash,我正在为具有多个属性的groupBy函数寻找lodash/typerscript解决方案。 以下是我迄今为止所尝试的: JSON: 打字脚本代码: // Group of same ids let mergeResults = _.groupBy(this.BSSDealresults, function (n) { return n.timeSegmentId; }); const objKeys = Object.keys(mergeResults); cons
// Group of same ids
let mergeResults = _.groupBy(this.BSSDealresults, function (n) {
return n.timeSegmentId;
});
const objKeys = Object.keys(mergeResults);
const AggregateResults = [];
objKeys.forEach(item => {
if (mergeResults[item].length > 1) {
let agg_balance = 0;
mergeResults[item].forEach(element => {
agg_balance += element.balance;
});
AggregateResults.push({
id: mergeResults[item][0].id,
jobId: mergeResults[item][0].jobId,
balance: agg_balance
});
} else {
AggregateResults.push(mergeResults[item][0]);
}
})
这个解决方案只通过相同的id对余额进行分组,因为我已经基于属性id应用了lodash\u groupBy函数
然而,我正在寻找基于多个属性的聚合结果,例如id、jobId和timeSegId
在lodash/typescript中,我们是否可以通过使用多个属性来应用这些属性
预期产出应为:
[
{
"jobId": 1001,
"id": 1,
"timeSegmentId": 1,
"balance": 100
},
{
"jobId": 1001,
"id": 2,
"timeSegmentId": 1,
"balance": 100
},
{
"jobId": 1002,
"id": 1,
"timeSegmentId": 1,
"balance": 200
},
{
"jobId": 1003,
"id": 1,
"timeSegmentId": 1,
"balance": 100
},
{
"jobId": 1003,
"id": 1,
"timeSegmentId": 2,
"balance": 100
},
{
"jobId": 1003,
"id": 1,
"timeSegmentId": 2,
"balance": 300
}
]
您可以通过从3个ID中创建一个字符串来为u.groupBy生成密钥。然后,您可以使用组BSSDealresults对象,使用或克隆第一个元素,并使用以下各项获得组合余额: const BSSDealresults=[{jobId:1001,id:1,timeSegmentId:1,balance:100},{jobId:1001,id:2,timeSegmentId:1,balance:100},{jobId:1002,id:1002,id:1,timeSegmentId:1,balance:100},{jobId:1003,id:1,timeSegmentId:1,balance:100},{jobId:1003,id:1,timeSegmentId:2,balance:100}; const mergeResults=..groupByBSSDealresults,{id,jobId,timeSegmentId}=>`${id}-${jobId}-${timeSegmentId}`; const AggregateResults=\uu0.mapmergeResults,组=>{ …组[0], 余额:uu.sumBygroup,“余额” }; console.logAggregateResults;
在给定输入数组的情况下,你能给出一个你希望得到的输出的例子吗?在对问题的编辑中,您希望得到什么结果?给我举个例子。用预期输出更新我的问题。
[
{
"jobId": 1001,
"id": 1,
"timeSegmentId": 1,
"balance": 100
},
{
"jobId": 1001,
"id": 2,
"timeSegmentId": 1,
"balance": 100
},
{
"jobId": 1002,
"id": 1,
"timeSegmentId": 1,
"balance": 200
},
{
"jobId": 1003,
"id": 1,
"timeSegmentId": 1,
"balance": 100
},
{
"jobId": 1003,
"id": 1,
"timeSegmentId": 2,
"balance": 100
},
{
"jobId": 1003,
"id": 1,
"timeSegmentId": 2,
"balance": 300
}
]