首页 > 解决方案 > 将多个json对象转换为对象数组

问题描述

我的数据目前以这种格式存储:

{
   "Site1":{
      "week":[
         {
            "access":1
         },
         {
            "access":8
         }
      ]
   },
   "Site2":{
      "week":[
         {
            "access":16
         }
      ]
   },
   "Site3":{
      "week":[
         {
            "access":2
         },
         {
            "access":6
         },
         {
            "access":2
         }
      ]
   }
}

我需要把它转换成这种格式:

[
   {
      "id":"Site1",
      "access":[1,8]
   },
   {
      "id":"Site2",
      "access":[16]
   },
   {
      "id":"Site3",
      "access":[2,6,2]
   }
]

如您所见,我还需要获取键(站点名称)并将它们设为“id”值。

关于如何在 JavaScript 中执行此操作的任何想法(我正在使用 angular v9)?我不太擅长重组这种类型的数据。

标签: javascriptarraysjsonangulartypescript

解决方案


您可以先获取entries然后映射它:

var data={ "Site1":{ "week":[ { "access":1 }, { "access":8 } ] }, "Site2":{ "week":[ { "access":16 } ] }, "Site3":{ "week":[ { "access":2 }, { "access":6 }, { "access":2 } ] }};

var result = Object.entries(data).map(([k,v])=>({id:k, access: v.week.map(p=>p.access)}));

console.log(result);


推荐阅读