1 回答
TA贡献1872条经验 获得超3个赞
您应该能够为此目的使用Array.reduce 。
我们创建一个映射,以 pid 为键,然后为每个已完成或待处理的对象加 1。 然后Object.values会再次将此映射转换为数组。我希望这可以帮助你!
data = [
{
"pid": 1,
"status": "done",
"title": "a"
},
{
"pid": 1,
"status": "pending",
"title": "a"
},
{
"pid": 1,
"status": "pending",
"title": "21"
},
{
"pid": 2,
"status": "pending",
"title": "c"
}
]
let result = Object.values(data.reduce( (map, d) => {
if (!map[d.pid]) map[d.pid] = { pid: d.pid, done: 0, pending: 0 };
if (d.status === "done") map[d.pid].done++;
if (d.status === "pending") map[d.pid].pending++;
return map;
}, {} ));
console.log("Result:", result);
添加回答
举报