猿问

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

我正在尝试创建此对象:


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))

我无法使类别键字符串正常工作。另外,我需要弄清楚如何正确过滤元素。


慕码人2483693
浏览 52回答 1
1回答

米脂

你可以尝试使用 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);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答