Преобразование объекта в список списков машинописного текста - PullRequest
0 голосов
/ 12 июля 2020

Я делаю вызов API из Angular 5, ответ приходит в формате ниже.

{   "metadata":{
      "lastSyncTime":"2000-11-21T16:07:53",
      "dataFromDB":true
   },
   "allocationReports":[      {
         "allocatedUserCount":100,
         "healthGoalName":"Eat Healthier"
      },
      {
         "allocatedUserCount":130,
         "healthGoalName":"Feel Happier"
      },
  
      {
         "allocatedUserCount":150,
         "healthGoalName":"Quit Smoking"
      }
   ],
   "overall":{
      "usersWithGoalCount":0,
      "registeredCount":500,
      "eligibleCount":280
   }
}

Мне нужно преобразовать эти данные в список списков (или массив массивов), чтобы что я могу построить несколько кольцевых диаграмм на этих данных. Я пробовал использовать несколько методов, например, используя .map, но получая все значения в одном списке. Как я могу создать данные в формате ниже.

Требуемый формат:

[ 
 [
  { "x": "Eat Healthier", "y": 100 },
  { "x": "Total registered", "y": 500 } 
 ],
 [
  { "x": "Feel Happier", "y": 130 },
  { "x": "Total registered", "y": 500 } 
 ],
 [
  { "x": "Quit Smoking", "y": 150 },
  { "x": "Total registered", "y": 500 } 
 ]
]

Общее зарегистрированное значение будет из overall.registeredCount

1 Ответ

1 голос
/ 12 июля 2020

попробуйте это

ob={"metadata":{ "lastSyncTime":"2000-11-21T16:07:53", "dataFromDB":true }, "allocationReports":[      { "allocatedUserCount":100, "healthGoalName":"Eat Healthier" }, { "allocatedUserCount":130, "healthGoalName":"Feel Happier" }, { "allocatedUserCount":150, "healthGoalName":"Quit Smoking" } ], "overall":{ "usersWithGoalCount":0, "registeredCount":500, "eligibleCount":280 } }

r=ob.allocationReports.map(o=>{return [{x:o.healthGoalName,y:o.allocatedUserCount},{x: "Total registered", y: ob.overall.registeredCount }]})

console.log(r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...