Nested JSON array and D3JS

后端 未结 1 527
伪装坚强ぢ
伪装坚强ぢ 2021-01-01 07:01

I\'m trying to use a nested json array to graph a multi-series chart with d3.js. I\'ve looked a lot of places on this site and others, and while there are similar topics, I

1条回答
  •  执笔经年
    2021-01-01 07:49

    You want to iterate over the keys in data, use the key to look up the corresponding value in data, and operate on the values.

    You want something like this:

    d3.json("data/data2.json", function(error, data) {
        for (k in data) {
            var k_data = data[k];
            k_data.forEach(function(d) {                              
                d.date = parseDate(d[0].date);                          
                d.close = +d[0].close;                               
            });
        }
    });
    

    Also, it looks like forEach takes a function that has two arguments, key and value:

    forEach: function(f) {
      for (var key in this) {
        if (key.charCodeAt(0) === d3_map_prefixCode) {
          f.call(this, key.substring(1), this[key]);
        }
      }
    }
    

    For example:

    values: function() {
      var values = [];
      this.forEach(function(key, value) {
        values.push(value);
      });
      return values;
    }
    

    Later: AmeliaBR is correct about forEach: it is not available for use on objects/dictionaries.

    var a = {"stock1": [1, 2, 3, 4], "stock2": [2, 3, 5, 7], "stock3": [1,2, 4,8]};
    a.forEach(function(value, key){ console.log(value, key);});
    /* TypeError: Object # has no method 'forEach' */
    
    
    

    But this works:

    a["stock1"].forEach(function(value, key){ console.log(value, key);});
    1 0
    2 1
    3 2
    4 3
    

    0 讨论(0)
    提交回复
    热议问题