使用数组将数组转换为对象

时间:2019-05-01 21:23:00

标签: javascript

我正在尝试根据一些数据创建一个导航菜单。为此,我需要将数据处理到数组对象中。我正在尝试使用map()进行此操作,我已经知道要制作对象的键和相应的值了,但是,我不知道如何处理相应年份下的多个标题。任何帮助将不胜感激。

const data = [
   {
     "fields": {
       "title": "Frozen Thorns",
       "year": 2017,
     }
   },
   {
     "fields": {
       "title": "The Professional Years",
       "year": 2018,
     }
   },
   {
     "fields": {
       "title": "Green Nothing",
       "year": 2018,
     }
   },
   {
     "fields": {
       "title": "The Next Voyage",
       "year": 2018,
     }
   },
   {
     "fields": {
       "title": "Smooth Sorcerer",
       "year": 2019,
     }
   },
   {
     "fields": {
       "title": "Azure Star",
       "year": 2019,
     }
   }]

   const menu = Object.assign({}, ...data.map(item => ({[item.fields.year]: item.fields.title})));
   
   
   // OUTPUT 
   
   // {
   //    2017: "Frozen Thorns",
   //    2018: "The Next Voyage",
   //    2019: "Azure Star"
   // }
   
   // DESIRED OUTPUT

   // {
   //    2017: ["Frozen Thorns"],
   //    2018: ["The Professional Years", "Green Nothing", "The Next Voyage"],
   //    2019: ["Smooth Sorcerer", "Azure Star"]
   // }
   

1 个答案:

答案 0 :(得分:1)

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

reduce