猿问

如何将接收到的对象转换为具有所需数据的另一个对象?

我得到以下格式的 JSON:


卖家按名称和日期分组,显示他们当天的销售量。


   "Isabela Alves de Quadros":{ 

      "2019-10-22":4500,

      "2019-10-25":120,

      "2019-11-04":60

   },

   "Naiara":{ 

      "2019-10-25":5000,

      "2019-10-28":10,

      "2019-10-31":6000

   },

   "Nathália":{ 

      "2019-10-17":15,

      "2019-11-01":125

   }

}

我想把它变成一个对象,如下所示:



{

 {

  name: "Isabela Alves de Quadros",

  data: [null, 4500, 120, null, null, null, 60]

 },

 {

  name: "Naiara",

  data: [null, null, 5000, 10, 6000, null, null]

 },

 {

  name: "Nathália",

  data: [15, null, null, null, null, 125, null]

 }

}


没有价值的数据,我放空。


有谁知道如何做到这一点或有想法要展示?


已经尝试制作地图了,但是没有用,找了好几个地方,都没有找到,可能是找错了方法。


但提前感谢您能提供帮助。


慕标5832272
浏览 150回答 1
1回答

米脂

// 做起来很快。可能不是一个有效的解决方案。// 在http://playcode.io 中运行const data = {    "Isabela Alves de Quadros":{       "2019-10-22":4500,      "2019-10-25":120,      "2019-11-04":60   },   "Naiara":{       "2019-10-25":5000,      "2019-10-28":10,      "2019-10-31":6000   },   "Nathália":{       "2019-10-17":15,      "2019-11-01":125   }}console.log(data)var names = Object.keys(data);console.log(names);var dates = Object.values(data);console.log(dates);var allDates =  dates.map((item) => (Object.keys(item)));console.log(allDates);var merged = ([].concat.apply([], allDates));var dist = new Set(merged);console.log(dist);var finalData = [];for(let name of names){   var dates = [];  for (let [key, value] of dist.entries())  {     var tempDates = data[name];     if(tempDates[key] != undefined){        dates.push(tempDates[key]);      }      else{        dates.push(null);      }  }  finalData.push( {name: name, data:dates})} console.log(finalData);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答