我有一个javascript对象数据:
[
{ 'sex': 'male', 'risk': '0.04', 'age_group': 'old' },
{ 'sex': 'female', 'risk': '0.03', 'age_group': 'young' },
{ 'sex': 'male', 'risk': '0.12', 'age_group': 'old' },
{ 'sex': 'female', 'risk': '0.04', 'age_group': 'old' },
]
我还有一个数组,用于指定名为元数据的列的顺序:
['sex', 'age_group', 'risk']
当使用d3.js可视化数据时(目前我正在使用表格),我需要根据元数据将它们按正确的顺序排列。
下面是我用来生成表的代码,没有对列进行排序。
var table = d3.select("#visualization_table");
table.append("thead");
table.append("tbody");
var thead = d3.select("thead")
.selectAll("th")
.data(metadata)
.enter()
.append("th")
.text(function(d) { return d });
var tr = d3.select("tbody").selectAll("tr")
.data(data)
.enter()
.append("tr");
var td = tr.selectAll("td")
.data(function(d) {return d3.values(d)})
.enter()
.append("td")
.text(function(d) {return d});
但顺序就像是'性','风险','age_group',而我想要的是'性','age_group','风险'。有人可以帮忙吗?
答案 0 :(得分:2)
您可以使用.data()
在嵌套metadata
调用中显式构建对象来执行此操作:
.data(function(d) {
return metadata.map(function(m) { return d[m]; });
})
完整演示here。