嗨,我只关注了code
[
{service: { name: "Home" },status: "Generated", feeCharged:{id:1,fee:2},
{service: { name: " Photography" },status: "requested",feeCharged:{id:2,fee:24}},
{service: { name: "Electrical" },status: "requested",feeCharged:{id:6,fee:42}},
{service: { name: "Electrical" },status: "Completed",feeCharged:{id:66,fee:23} },
{service: { name: " Photography" },status: "Completed",feeCharged:{id:78,fee:11}},
{service: { name: "Home" },status: "Generated",feeCharged:{id:45,fee:234}},
{service: { name: "Electrical" }, status: "requested",feeCharged:{id:77,fee:3} },
{service: { name: "Electrical" }, status: "requested",feeCharged:{id:4,fee:33} }
]
现在,我正在try 按service.name
和status
再加上count
来筛选新数组中的数据.
最终结果应该是:
[
{ name: "Home", status: "Generated", count: 2 },
{ name: "Photography", status: "requested", count: 1 },
{ name: "Photography", status: "Completed", count: 1 },
{ name: "Electrical", status: "requested", count: 3 },
{ name: "Electrical", status: "Completed", count: 1 }
]
所以,正如你在我的最终结果中看到的,如果有相同的service.name
和status
,我将它们合并到一个对象中,并设置计数.
对于过滤,我try 了这个,但它并不像我预期的那样工作:
let answer = [];
data.forEach((x) => {
if (!answer.some((y) => y.name === x.service.name)) {
let newAnswer = {};
newAnswer.name = x.service.name;
newAnswer.value = 1;
answer.push(newAnswer);
} else {
let existAnswer = answer.find((y) => y.name === x.service.name);
existAnswer.value++;
}
});
请帮助我实现这个结果,谢谢.