鍍金池/ 問(wèn)答/HTML/ 如何根據(jù)id或者指定字段重組數(shù)據(jù)?

如何根據(jù)id或者指定字段重組數(shù)據(jù)?

1.原來(lái)數(shù)據(jù)

arr1 = [
    {
        bizName:"abc",
        certName:"食品衛(wèi)生許可證",
        certType:"餐廳",
        url:"餐飲食品經(jīng)營(yíng)許可證.jpg"
    },
    {
        bizName:"abc",
        certName:"食品衛(wèi)生許可證",
        certType:"餐廳",
        url:"餐飲食品經(jīng)營(yíng)許可證222.jpg"
    },
    {
        bizName:"abcd",
        certName:"食品衛(wèi)生許可證",
        certType:"餐廳",
        url:"餐飲食品經(jīng)營(yíng)許可證222.jpg"
    },
]

2.期望得到的數(shù)據(jù)

resultArr  = [
    {
        name:'abc',
        arr:[
            {
                bizName:"abc",
                certName:"食品衛(wèi)生許可證",
                certType:"餐廳",
                url:"餐飲食品經(jīng)營(yíng)許可證.jpg"
            },
            {
                bizName:"abc",
                certName:"食品衛(wèi)生許可證",
                certType:"餐廳",
                url:"餐飲食品經(jīng)營(yíng)許可證222.jpg"
            },            
        ]
    },
    {
        name:'abcd',
        arr:[
            bizName:"abcd",
            certName:"食品衛(wèi)生許可證",
            certType:"餐廳",
            url:"餐飲食品經(jīng)營(yíng)許可證222.jpg"            
        ]
    }
]

3.總結(jié):就是按照bizName字段進(jìn)行歸類

回答
編輯回答
我甘愿
arr1.reduce((all, item)=>{
    all.some(key => key.name === item.bizName && key.arr.push(item)) || all.push({
        name:item.bizName,
        arr:[item]
    })
    return all
},[])
2018年8月12日 09:47
編輯回答
蝶戀花
let name_arr = [];
let resultArr = [];
arr1.forEach(obj => {
    if (!name_arr.includes(obj.bizName)) {
        resultArr.push({
            name: obj.bizName,
            arr: arr1.filter(a => a.bizName === obj.bizName)
        })
        name_arr.push(obj.bizName)
    } 
})
2018年9月16日 15:07