js数据处理问题

let varians= [

    {"variation": [{"sort": 0, "Model": "small"},{"sort": 1, "Color": "pink"}]},
    {"variation": [{"sort": 0, "Model": "larger"}]},
    {"variation": [{"sort": 0, "Model": "big"}]}
]

上面数据格式转下面的,sort相等的分一组,同时取出他的属性放在一起

[
    {name:'Model','select':[{pop:'small'},{pop:'larger'},{pop:'big'}]},
    {name:'Color','select':[{pop:'pink'}]}
]
阅读 1.5k
1 个回答

解法很多,

我按照其中之一给你写了个,具体思路看注释

varians.reduce((a,b) => a.concat(b.variation), []) // 先将数组扁平化
    .reduce((a,b) => {
        let val = a[b.sort];
        if(val){
            // 如果已经存在 就到对应的数组里push
            val.select.push({pop:b[val.name]})
        }else{
            // 不存在就自己创建一个数组
            const key = Object.keys(b).filter(item => item !== 'sort')[0];
            a[b.sort] = {name: key, select: [{pop: b[key]}]}
        }
        return a
    }, [])
    .filter(item => item) // 排除空数组
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题