0

请帮助我将以下字符串转换为实际数据。

    [
      {
        “关键”:“模型1”,
        “价值观”:[
          “[1001874600000,16]”,
          “[1001961000000,11]”,
          “[1002047400000,14]”,
          “[1002133800000,19]”
        ]
      },
      {
        “关键”:“模型2”,
        “价值观”:[
          “[1001874600000,14]”,
          “[1001961000000,18]”,
          “[1002047400000,14]”,
          “[1002133800000,12]”
        ]
      },
      {
        “关键”:“模型3”,
        “价值观”:[
          “[1001874600000,14]”,
          “[1001961000000,13]”,
          “[1002047400000,11]”,
          “[1002133800000,20]”
        ]
      },
      {
        “关键”:“模型4”,
        “价值观”:[
          “[1001874600000,11]”,
          “[1001961000000,11]”,
          “[1002047400000,17]”,
          “[1002133800000,11]”
        ]
      }
    ]

我使用以下函数将平面数据转换为上述格式。

    d3.csv(“数据.csv”,函数(数据){
        data.forEach(函数(d){
            d.count = +d.count;
            d.date = Date.parse(d.date);
        });

        var 巢 = d3.nest()
            .key(function(d) {return d.model;})
            .rollup(function(v) {return v.map(function(d) {return "[" + d.date + "," + d.count + "]";})})
            .条目(数据)



        d3.select('body').append('pre')
                   .text(JSON.stringify(nest, null, ' '));
        });

现在我只需要删除值字段中的双引号。有人请帮助我,我不知道该怎么做。

帮助会很高兴。

提前致谢。

4

2 回答 2

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];
于 2013-10-31T08:29:48.647 回答
0

不完全是主题,但任何阅读本文的人都应该注意一些事情。你应该远离 eval() 函数,除非你 100%,而且我不能强调 100%,知道传入的数据(即不是来自另一个来源并由你控制)。

以下是一些有助于提供更多详细信息的阅读材料(javascript eval 可能造成的问题是什么)。

于 2013-10-31T21:36:05.917 回答