为了账号安全,请及时绑定邮箱和手机立即绑定

如何从同级对象和过滤器元素数组中创建父子对象?

如何从同级对象和过滤器元素数组中创建父子对象?

慕码人2483693 2022-09-02 16:13:01
我正在尝试创建此对象:const data = [  {    "javascript": [      {        "product": "1234",      },      {        "product": "4321",      }    ]  },    {    "python": [      {         "product": "9876",      }    ]  }]这里的代码片段是我试图解析的原始对象:const myData = [  {    "category": "javascript",    "product": "1234"  },  {    "category": "javascript",    "product": "4321"  },  {    "category": "python",    "product": "9876"  },];const mountCategories = (data) => {  const categoriesObj = data.map(value => value.category).filter((value, index, a) => a.indexOf(value) === index)    const categorizedData = categoriesObj.map((value) => {    return {      value: data.map(value => {        return {          product: value.product,        }      })    }  });    return (    categorizedData  )}console.log(mountCategories(myData))我无法使类别键字符串正常工作。另外,我需要弄清楚如何正确过滤元素。
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

你可以尝试使用 array.reduce:


const myData = [

  {

    "category": "javascript",

    "product": "1234"

  },

  {

    "category": "javascript",

    "product": "4321"

  },

  {

    "category": "python",

    "product": "9876"

  },

];


let result = myData.reduce((acc,current) => {

   let prev = acc.find(doc => doc[current.category]);

   if(!prev){

      prev = { [current.category]: [] };

      acc.push(prev);

   }

   prev[current.category].push({product: current.product});

   

   return acc;

}, []);


console.log(result);


查看完整回答
反对 回复 2022-09-02
  • 1 回答
  • 0 关注
  • 51 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号