js 数组对象添加字段问题

后台取出来的数据
[

{
    date: "12-01",
    name: "a",
    rank: "111"
},
{
    date: "12-01",
    name: "b",
    rank: "112"
},
{
    date: "12-02",
    name: "c",
    rank: "100"
},
{
    date: "12-04",
    name: "a",
    rank: "104"
},
{
    date: "12-04",
    name: "b",
    rank: "112"
}

]

日期有重复,还有空缺的,我想把空缺的日期都补上,比如下面这样:
如果rank没有数据 就补"-"
[

{
    date: "12-01",
    name: "a",
    rank: "111"
},
{
    date: "12-01",
    name: "b",
    rank: "112"
},
{
    date: "12-01",
    name: "c",
    rank: "-"
},
{
    date: "12-02",
    name: "a",
    rank: "-"
},
{
    date: "12-02",
    name: "b",
    rank: "-"
},
{
    date: "12-02",
    name: "c",
    rank: "100"
},
{
    date: "12-04",
    name: "a",
    rank: "104"
},
{
    date: "12-04",
    name: "b",
    rank: "112"
},
{
    date: "12-04",
    name: "c",
    rank: "105"
}

]
请问这种怎么办啊?

阅读 7.3k
2 个回答

将后台返回数据origin通过下面这个complete函数处理一下就好

const complete = (origin) => {
    const dict = {}
    //整理现有信息为一个对象dict
    origin.forEach(o => {
        if(!dict[o.date]){
            dict[o.date] = {}
        }
        dict[o.date][o.name]=o.rank
    })
    const target = []
    //补足信息
    for (let day in dict) {
        ['a','b', 'c'].forEach(name => target.push({
            date: day,
            name,
            rank: dict[day][name] || '--'
        }))
    }
    return target
}
data.map((item)=>({'date': item.date, 'name': item.name, 'rank': item.rank || '-'}))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题