js数据转化格式

let varians=[

{variation:[{channel_spec:'opo',value:9},{channel_spec:'Style',value:'S'}]},
{variation:[{channel_spec:'opo',value:5},{channel_spec:'Style',value:'M'}]},
{variation:[{channel_spec:'opo',value:6}]}
]

上面的数据格式转化成下面这种,根据channel_spec分类

[    {name:'opo','select':[{pop:'9'},{pop:'5'},{pop:'6'}]},
    {name:'Style','select':[{pop:'S'},{pop:'M'},]}
]
阅读 1.6k
2 个回答

拿去用

function task(ary) {
        let result = {};
        ary.map(i => {
          i = i.variation;
          i.map(item => {
            let c = item.channel_spec;
            if (!result[c]) {
              result[c] = { name: c };
            }
            if (!result[c].select) {
              result[c].select = [];
            }
            result[c].select.push({ pop: item.value });
          });
        });
        console.log(Object.values(result));
        return Object.values(result);
      }
      task(varians);

clipboard.png

let varians=[
{variation:[{channel_spec:'opo',value:9},{channel_spec:'Style',value:'S'}]},
{variation:[{channel_spec:'opo',value:5},{channel_spec:'Style',value:'M'}]},
{variation:[{channel_spec:'opo',value:6}]}
];

const exec = (list) => ((m) => Object.keys(m).map(name => ({ name, select: m[name] })))(list.reduce((m, {variation}) => {
  variation.map(({channel_spec, value}) => {
    let t = m[channel_spec] || []
    t.push({pop: value.toString()});
    m[channel_spec] = t;
  })
  return m
}, {}));

console.log(exec(varians));
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题