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
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 #<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