数据格式拼凑,求助

求助:

原数据格式

    var list = [{
                    spec: [{
                        keyName: "颜色",
                        valueName: "红色"
                    }, {
                        keyName: "大小",
                        valueName: "XL"
                    }]
                },
                {
                    spec: [{
                        keyName: "颜色",
                        valueName: "绿色"
                    }, {
                        keyName: "大小",
                        valueName: "XL"
                    }]
                }
            ]

期望拼凑成以下数据格式
var attrs = [
           {
             pName: '颜色',
             spec: [
               {cName:'红色'},
               {cName:'绿色'}
             ]
           },
           {
             pName: '大小',
             spec: [
               {cName:'XL'}
             ]
           }
         
         ]
阅读 1.1k
1 个回答

到饭点了,你自己看看再简化一下吧,我溜了

console.log(list.reduce((arr, item) => {
    item.spec.forEach(item2 => {
        let obj = arr.find(i => i.pName === item2.keyName)
        if (!obj) {
            obj = {
                pName: item2.keyName,
                spec: [
                    {cName: item2.valueName}
                ]
            }
            arr.push(obj)
        } else {
            let c = obj.spec.find(i => i.cName === item2.valueName)
            if (!c) obj.spec.push({cName: item2.valueName})
        }
    })
    return arr
}, []))
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题