Javascript 将数组转换为具有数组的对象

Javascript 将数组转换为具有数组的对象,javascript,Javascript,我正试图用一些数据创建一个导航菜单。为了做到这一点,我需要将数据处理成数组对象。我试图使用map()来实现这一点,我已经达到了制作对象键和相应值的程度,但是,我不知道如何处理对应年份下的多个标题。任何帮助都将不胜感激 const数据=[ { “字段”:{ “标题”:“冻结的荆棘”, “年份”:2017年, } }, { “字段”:{ “职称”:“职业年”, “年份”:2018年, } }, { “字段”:{ “标题”:“没有绿色”, “年份”:2018年, } }, { “字段”:{ “标题”

我正试图用一些数据创建一个导航菜单。为了做到这一点,我需要将数据处理成数组对象。我试图使用
map()
来实现这一点,我已经达到了制作对象键和相应值的程度,但是,我不知道如何处理对应年份下的多个标题。任何帮助都将不胜感激

const数据=[
{
“字段”:{
“标题”:“冻结的荆棘”,
“年份”:2017年,
}
},
{
“字段”:{
“职称”:“职业年”,
“年份”:2018年,
}
},
{
“字段”:{
“标题”:“没有绿色”,
“年份”:2018年,
}
},
{
“字段”:{
“标题”:“下一次航行”,
“年份”:2018年,
}
},
{
“字段”:{
“头衔”:“光滑的巫师”,
“年份”:2019年,
}
},
{
“字段”:{
“标题”:“天蓝之星”,
“年份”:2019年,
}
}]
const menu=Object.assign({},…data.map(item=>({[item.fields.year]:item.fields.title}));
//输出
// {
//2017年:“冰冻荆棘”,
//2018年:“下一次航行”,
//2019年:“蔚蓝之星”
// }
//期望输出
// {
//2017:[“冻结的荆棘”],
//2018:[“专业年”、“绿色无”、“下一次航行”],
//2019:[“光滑的巫师”、“蔚蓝之星”]
// }

一般规则是,如果要保持与原始数组相同的形状,则使用
map
,但如果要将其转换为较小的形状,则使用适当命名的
reduce
。看看这个

const数据=[
{
“字段”:{
“标题”:“冻结的荆棘”,
“年份”:2017年,
}
},
{
“字段”:{
“职称”:“职业年”,
“年份”:2018年,
}
},
{
“字段”:{
“标题”:“没有绿色”,
“年份”:2018年,
}
},
{
“字段”:{
“标题”:“下一次航行”,
“年份”:2018年,
}
},
{
“字段”:{
“头衔”:“光滑的巫师”,
“年份”:2019年,
}
},
{
“字段”:{
“标题”:“天蓝之星”,
“年份”:2019年,
}
}];
const menu=data.reduce((累加器,当前值)=>{
累加器[currentValue.fields.year]=(累加器[currentValue.fields.year]| |[]).concat(currentValue.fields.title);
回流蓄能器;
}, {});

控制台日志(菜单)
您可以使用
reduce
,而不是
map