javascript - 如何将收到的对象转换为包含所需数据的另一个对象?
问题描述
我得到以下格式的 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]
}
}
如果数据没有价值,我就放空。
有谁知道如何做到这一点或有想法展示?
已经试着做地图了,但是没用,找了好几个地方,都没有找到,可能是找错了路。
但提前谢谢谁能帮忙。
解决方案
// 做的很快。可能不是一个有效的解决方案。// 在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);
推荐阅读
- c++ - 一些 std::ranges::XXX_n 的动机是什么?
- reactjs - Django authorizing request even if permissions.AllowAny is set
- three.js - 来自三个.js RenderTarget 的 alpha 地图的意外透明度
- javascript - 它显然无法找到模块
- scrapy - 如何将scrapy合约与CloseSpider异常结合起来
- ios - 当用户更改 Picker 值时执行操作
- azure-functions - Azure 功能消耗计划中使用 Azure 应用配置的指南
- java - 获取 Spring WebClient 请求的状态码
- css - 悬停在TextField上时Material-ui显示指针光标
- report - 无法生成黄瓜 pdf 报告