我想创建一个看起来像How to use json data instead of tsv file in d3 multi line charts?
的图表为此,我使用JSON数据,但在我的数据映射中有一些我不了解的东西
{
"Session_test": [{
"datas_lines": [{
"datas_line": [],
"log_time": "No data"
},
{
"datas_line": [],
"log_time": "No data"
},
{
"datas_line": [],
"log_time": "No data"
},
{
"datas_line": [
"157",
"158",
"157",
"157",
"157",
"158",
"159",
"161",
"160",
"160",
"159",
"158",
"159",
"160",
"160",
"160",
"160",
"161",
"160",
"161",
"159",
"161",
"161",
"158",
"161",
"159",
"160",
"157"
],
"log_time": "5/18/2017 4:32:14 PM"
},
{
"datas_line": [
"154",
"156",
"155",
"155",
"155",
"156",
"158",
"159",
"158",
"157",
"157",
"156",
"157",
"158",
"159",
"158",
"158",
"159",
"159",
"159",
"158",
"159",
"159",
"156",
"159",
"157",
"158",
"156"
],
"log_time": "5/18/2017 4:34:14 PM"
},
{
"datas_line": [
"154",
"156",
"155",
"155",
"155",
"156",
"158",
"159",
"158",
"157",
"157",
"156",
"157",
"158",
"159",
"158",
"158",
"159",
"159",
"159",
"158",
"159",
"159",
"156",
"159",
"157",
"158",
"156"
],
"log_time": "5/18/2017 4:34:14 PM"
}
]
}]
}
所以,我有一个objet数组,每个对象包含一个log_time(日期)和一个数字数组。
我需要使用这种格式来利用它们:
var data = [
{log_time:"5/18/2017 4:32:14 PM","0":"157", "1":"158", "2": "157", etc...},
{log_time:"5/18/2017 4:32:14 PM","0":"154" , "1":"156", "2": "155", etc...}
];
我如何制作类似的东西?
我的实际代码:
var dateKey = d3.keys(data[0]);
var i = keys.indexOf('log_time')
if(i != -1) {
keys.splice(i, 1);
}
var temp_list = keys.map(function(d) {
return {
id:d,
values: data.map( function(e) {
return {
date: e.log_time,
temperature: e[d]
};
})
} });
console.log(temp_list);
我目前正在重复使用此帖子中的代码:How to use json data instead of tsv file in d3 multi line charts?
答案 0 :(得分:2)
你可以这样做:
let responses = [];
// your data
let data = Session_test[0].datas_lines;
data.forEach(obj => {
if (obj.log_time !== "No data") {
let iterator = 0;
let final = {};
obj.datas_line.forEach(d => {
final[iterator.toString()] = d;
iterator++;
});
final.log_time = obj.log_time;
responses.push(final);
}
});
说明:您只需要检查log_time属性是否包含数据。如果是这样,只需对值运行for循环并继续将其添加到对象中。一旦对象完成,将其推送到数组。