【发布时间】:2016-09-23 06:33:16
【问题描述】:
mbostock 最近回答了我关于在 d3 中使用数据的最佳实践的问题,这里是帖子的链接;
https://github.com/d3/d3/issues/2828
但是,尝试遵循他的建议,我仍然对如何迭代他建议的多维数据感到困惑。我现在只是尝试控制台记录数据,并希望有人可以在帖子之后帮助我制作实际示例,相关的 sn-p 可以在下面看到;
您可以有一个单独的国家/地区数组,然后需要一个二维值数组,类似于用于避免重复指定日期的技巧。实际上,您可以将其推广到组织、国家和日期的 n 维矩阵:
{
"organizations": ["EA", "EB", "EC"],
"countries": ["Netherlands", "Belgium", "France"],
"dates": ["Jan_2016", "Feb_2016", "Mar_2016"],
"values": [
[
[11.7999, 15.0526, 13.2411],
[25.7713, 24.1374, null],
[27.6033, 23.6186, 20.2142]
],
[
[11.7999, 15.0526, 13.2411],
[25.7713, 24.1374, null],
[27.6033, 23.6186, 20.2142]
]
]
}
我希望这将是最简洁的,但您必须在访问数据时记住维度顺序:
var organization = "EA",
country = "Netherlands",
date = "Jan_2016",
value = data.values[organization][country][date]; // 11.7999
我一直在尝试了解如何实现这一结果,但是由于我对这一切都比较陌生,所以这很困难。我发现的最有用的资源是 > video1 + video2 并尝试使用此 guide 作为参考。
我仍然不知道如何实际执行此操作,而且我不确定 mbostock 建议的数据结构是否不可能,或者我只是遗漏了一些东西(阅读:很多)? (我 99.99% 肯定是后者)。
这就是我想要做的;
http://plnkr.co/edit/2O9Gn28WuMCE1ajOonzY?p=preview
d3.json("data.json", function(error, data) {
if (error) {
console.log(error)
} else {
console.log(data)
data = d3.entries(data);
console.log(data)
}
data.forEach(function(d) {
var org = Object.keys(data[0]);
console.log(org)
})
});
所以,据我所知,我需要将 json 转换为数组,然后生成一系列 forEach 循环以将所有内容联系在一起。这是我真正苦苦挣扎的事情,任何帮助都将不胜感激。
我希望一切都得到解释/问题相关,
谢谢
【问题讨论】:
标签: javascript json sorting d3.js multidimensional-array