2013-06-03 71 views
2

我有一個CSV表示分層樹數據:D3.js - 條件適用nest.key()函數數組元素

industry,level1,level2,level3,name 
Ecommerce,Web,,,Rakuten 
Ecommerce,Crowdsourcing,,,Lancers 
Social,Photo sharing,Deco apps,,Snapeee 
Social,Photo sharing,Deco apps,Collage apps,DecoAlbum 
Portals,,,,Yahoo Japan 

level1...level3表示子節點,和行name表示底部節點。我正在嘗試應用d3.nest()函數,以獲得分層的JSON對象。特別是,我想擺脫層級行爲空的節點。到目前爲止,我下面的代碼:

d3.csv("data.csv", function(rows) { 
    sunburst_tree = d3.nest() 
    .key(function(d) { return d.industry; }) 
    .key(function(d) { return d.level1; }) 
    .key(function(d) { if (!(typeof d.level2 === 'undefined')) return d.level2; }) 
    .entries(rows); 

    console.log(sunburst_tree); 
}); 

將會產生JSON對象空鍵,這樣的:

{"key":"Portals", 
"values":[{"key":"", 
    "values":[{"key":"", 
     "values":[{"industry":"Portals","level1":"","level2":"","level3":"","name":"Yahoo Japan"}] 
     }] 
    }] 
} 

相反,我想刪除所有空的子節點:

{"key":"Portals", 
    "values":[{"industry":"Portals", 
       "level1":"","level2":"","level3":"","name":"Yahoo Japan"}]} 
} 

如何做到這一點?

回答

0

你想擁有多個密鑰嗎?看起來像你想要的格式,你只有一個鍵。

如果你不想多個鍵,你應該刪除你的函數定義的按鍵,

OR

如果你確實需要多個密鑰,我會建議你面前有一個if從句使用你的函數來生成密鑰。並檢查空字符串爲

d.level1 === "" 

應該有所幫助。