请帮我将以下字符串转换为实际数据。
[ { "key": "model1", "values": [ "[1001874600000,16]", "[1001961000000,11]", "[1002047400000,14]", "[1002133800000,19]" ] }, { "key": "model2", "values": [ "[1001874600000,14]", "[1001961000000,18]", "[1002047400000,14]", "[1002133800000,12]" ] }, { "key": "model3", "values": [ "[1001874600000,14]", "[1001961000000,13]", "[1002047400000,11]", "[1002133800000,20]" ] }, { "key": "model4", "values": [ "[1001874600000,11]", "[1001961000000,11]", "[1002047400000,17]", "[1002133800000,11]" ] } ]
我使用以下函数将平面数据转换为上述格式。
d3.csv("data.csv", function(data) { data.forEach(function(d){ d.count = +d.count; d.date = Date.parse(d.date); }); var nest = d3.nest() .key(function(d) {return d.model;}) .rollup(function(v) {return v.map(function(d) {return "[" + d.date + "," + d.count + "]";})}) .entries(data) d3.select('body').append('pre') .text(JSON.stringify(nest, null, ' ')); });
现在我只需删除值字段中的双引号。有人请帮助我,我不知道怎么做。
帮助会很高兴。
提前致谢。
答案 0 :(得分:0)
我知道,eval
是邪恶的,但您可以使用它将字符串转换为如下列表:
var data = '[1,2,3]';
data = eval(data); // returns [1,2,3]
或者您可以重写以下return
声明
return "[" + d.date + "," + d.count + "]";
喜欢这样
return [d.date, d.count];
答案 1 :(得分:0)
不完全是关于主题的,但有些人在阅读此内容时应该注意这一点。你应该保持远离eval()函数,除非你100%,我不能强调100%,知道传入的数据(即不是来自其他来源并由你控制)。
以下是一些有助于提供更多详情的阅读材料(what are the issues javascript eval can pose)。