2015-10-14 53 views
0

我有一個JavaScript對象數據d3.js如何按指定順序列出列?

[ 
    { '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', '風險'。誰能幫忙?

回答

2

您可以通過顯式構造嵌套.data()調用的對象,使用metadata做到這一點:

.data(function(d) { 
    return metadata.map(function(m) { return d[m]; }); 
}) 

完成演示here