【问题标题】:D3 dynamic json key namesD3 动态 json 键名
【发布时间】:2016-05-07 17:08:43
【问题描述】:

当您想在 d3 中制作图表并从 json 文件(例如)读取输入时,代码大致如下:

 d3.json("data/data.json", function(error, data) {
    data.forEach(function(d) {
        d.date = parseDate(d.date);
        d.close = +d.close;
    });

    // Scale the range of the data
    x.domain(d3.extent(data, function(d) { return d.date; }));
    y.domain([0, d3.max(data, function(d) { return d.close; })]);

    svg.append("path")      // Add the valueline path.
        .attr("d", valueline(data));

    svg.append("g")         // Add the X Axis
        .attr("class", "x axis")
        .attr("transform", "translate(0," + height + ")")
        .call(xAxis);

    svg.append("g")         // Add the Y Axis
        .attr("class", "y axis")
        .call(yAxis);
});

在我从 d3noob.org 获得的这个特定示例中,有一个 json 文件,其中包含具有 2 个键(日期和关闭)的对象。如果我不知道 json 文件的键名并且必须使用字符串变量怎么办?例如:

d3.json("data/data.json", function(error, data) {
        var var1 = "date";
        var var2 = "close";
        data.forEach(function(d) {
            d.var1 = parseDate(d.var1);
            d.var2 = +d.var2;
        });

我试过这样做,但控制台给了我一个错误

d3.min.js:1 错误:属性 d:预期数字, "M0,NaNL106,NaNL212,..."。

我在这里做错了什么?

【问题讨论】:

    标签: javascript json d3.js


    【解决方案1】:

    使用方括号[] 表示法访问名称存储在变量中的对象属性。

    例如:d.var1 = parseDate(d.var1) 变为 d[var1] = parseDate(d[var1])

    【讨论】:

    • 感谢您的快速答复!它就像一个魅力
    【解决方案2】:

    试试这个:

    d3.json("data/data.json", function(error, data) {
        var var1 = "date";
        var var2 = "close";
        data.forEach(function(d) {
            d[var1] = parseDate(d[var1]);
            d[var2] = +d[var2];
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 2021-11-02
      • 2014-12-22
      • 1970-01-01
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多