为了账号安全,请及时绑定邮箱和手机立即绑定

处理对象数组

处理对象数组

慕慕森 2022-07-08 17:03:38
我有这个代码,"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"    }]我正在尝试像这样处理它"data": [    {        "pid": 1,        "done": 1,        "pending":2    },    {        "pid": 2,        "done": 0,        "pending":1    }]我已经尝试了很多来产生我想要的结果,但没有运气,现在我在这里发布以获得一些帮助。
查看完整描述

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);


查看完整回答
反对 回复 2022-07-08
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信