我正在尝试创建此对象: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);
添加回答
举报
0/150
提交
取消