我有一个对象数组
[
{
"team": "team-a",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-b",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-a",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-b",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-unassigned",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
}
]我正在寻找一种将对象与重复的team键合并的方法,然后将结果对象中的每个值和起来。最终结果将如下所示:
[
{
"team": "team-a",
"results": {
"passed": 2,
"failed": 2,
"flaky": 2,
"skipped": 2,
"timedOut": 2
}
},
{
"team": "team-b",
"results": {
"passed": 2,
"failed": 2,
"flaky": 2,
"skipped": 2,
"timedOut": 2
}
},
{
"team": "team-unassigned",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
}
]我试过减少,但就是无法找到解决办法。有人能给我指点吗?
发布于 2022-08-25 20:10:18
请记住它修改了source数组。
const source = [{
"team": "team-a",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-b",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-a",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-b",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-unassigned",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
}
]
const additional = [{
"team": "team-a",
"results": {
"passed": 2,
"failed": 2,
"flaky": 2,
"skipped": 2,
"timedOut": 2
}
},
{
"team": "team-b",
"results": {
"passed": 2,
"failed": 2,
"flaky": 2,
"skipped": 2,
"timedOut": 2
}
},
{
"team": "team-unassigned",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
}
]
source.forEach(({
team,
results
}) => {
const {
results: additionalResults
} = additional.find(o => o.team === team)
Object.entries(additionalResults).forEach(([key, value]) => {
results[key] += value
})
})
console.log(source)
发布于 2022-08-25 20:21:52
是,
var arr=[{team:"team-a",results:{passed:1,failed:1,flaky:1,skipped:1,timedOut:1}},{team:"team-b",results:{passed:1,failed:1,flaky:1,skipped:1,timedOut:1}},{team:"team-a",results:{passed:1,failed:1,flaky:1,skipped:1,timedOut:1}},{team:"team-b",results:{passed:1,failed:1,flaky:1,skipped:1,timedOut:1}},{team:"team-unassigned",results:{passed:1,failed:1,flaky:1,skipped:1,timedOut:1}}]
var result = Object.values(arr.reduce(function(agg, item) {
agg[item.team] = agg[item.team] || {
team: item.team,
results: {}
};
for (var key in item.results) {
agg[item.team].results[key] = (agg[item.team].results[key] || 0) + item.results[key]
}
return agg;
}, {}))
console.log(result);.as-console-wrapper {
max-height: 100% !important;
}
发布于 2022-08-25 21:03:18
let input = [
{
"team": "team-a",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-b",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-a",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-b",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
},
{
"team": "team-unassigned",
"results": {
"passed": 1,
"failed": 1,
"flaky": 1,
"skipped": 1,
"timedOut": 1
}
}
];
let resultObj = {};
input.forEach((entry) => {
let resultTypes = Object.keys(entry.results);
resultTypes.map((type) => {
resultObj[entry.team] = resultObj[entry.team] || {
"team" : entry.team,
"results" : {}
};
resultObj[entry.team].results[type] = (resultObj[entry.team].results[type] || 0) + entry.results[type];
});
});
console.log( Object.values(resultObj) );https://stackoverflow.com/questions/73493093
复制相似问题