gpt4 book ai didi

javascript - 基于特定键一起重组数组 - javascript

转载 作者:行者123 更新时间:2023-12-02 16:04:11 25 4
gpt4 key购买 nike

我有一个像这样的对象数组:

 const data = [
{category: {id: 1, name: 'beverage'}, title: 'Tea'},
{category: {id: 1, name: 'beverage'}, title: 'Coffee'},
{category: {id: 2, name: 'snacks'}, title: 'French fries'},
];

我想要这样的结果:

const transformed = [
{
category: "beverage",
data: [{title:'coffee'},{title:'tea'}, ...]
},
{
category: "snacks",
data: [{title:'french fries'},...]
},
..
]

我所做的是:

 let transformed = data?.map(function (obj) {
var result = {
category: obj.category.title,
data: [],
};
for (var key in obj) {
if (obj.hasOwnProperty(key) && key === 'category') {
result.values.push(obj);
}
}

return result;
});

但是通过这种方法,我得到了数组中每个对象的重复类别名称。

最佳答案

与所有分组操作一样,关键是使用reduce 构建新对象。

const data = [
{category: {id: 1, name: 'beverage'}, title: 'Tea'},
{category: {id: 1, name: 'beverage'}, title: 'Coffee'},
{category: {id: 2, name: 'snacks'}, title: 'French fries'},
];

const result = Object.values(data.reduce( (a,i) => {
a[i.category.id] = a[i.category.id] || {category:i.category.name, data:[]};
a[i.category.id].data.push({title:i.title});
return a;
},{}));

console.log(result);

关于javascript - 基于特定键一起重组数组 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69913095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com