Javascript d3.js如何按指定顺序列出列?

Javascript d3.js如何按指定顺序列出列?,javascript,d3.js,Javascript,D3.js,我有一个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': 'ol

我有一个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']
我还有一个数组,用于指定名为元数据的列的顺序:

[
  { '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});

但顺序是‘性’、‘风险’、‘年龄组’,而我想要的是‘性’、‘年龄组’、‘风险’。有人能帮忙吗?

您可以通过使用
元数据在嵌套的
.data()
调用中显式构造对象来完成此操作:

.data(function(d) {
  return metadata.map(function(m) { return d[m]; });
})
完成演示