2014-04-03 19 views
0

我一直在努力去理解Zoomable treemap example by Mike Bostock的工作原理。「?」 javascript中的運算符應用於d3中的示例

我去了API reference of treemap,瞭解了基本的工作方式。 當我試圖瞭解上一個鏈接中顯示的自定義實現時,我迷了路。

我想我理解它期望分層結構化.json數據的方式。作爲一個用戶,我看到它由線到無限的「深度」數據的遞歸調用,但要行,我不明白這一點:

`var treemap = d3.layout.treemap() 
.children(function(d, depth) { return depth ? null : d.children; }) 
... 
` 

什麼是"?"一般的含義是什麼? "?"是什麼意思?它會返回節點的depth嗎?即0指根,1意味着孩子...

它也出現在其他功能上,像累積一個(我不明白無論它做什麼)

`function accumulate(d) { 
return d.children 
? d.value = d.children.reduce(function(p, v) { return p + accumulate(v); }, 0) 
: d.value; 
` 

或者說顯示了一個名稱

`function name(d) { 
return d.parent 
? name(d.parent) + "." + d.name 
: d.name; 
} 
` 

我很感激你的幫助,讓我明白那裏發生了什麼。

回答

1

?運算符是條件的通用Javascript構造。也就是說,

foo ? 0 : 1; 

相當於

if(foo) { 
    0 
} else { 
    1 
} 

這是寫條件語句較短的方式。

+0

我知道這將是一個簡單的解決方案,但我並不認爲我會如此基本。謝謝 – PleaseTeachMeHowToDoIt

+0

@PleaseTeachMeHowToDoIt僅供將來參考,它的技術名稱是[**'三元運算符**](http://en.wikipedia.org/wiki/%3F :),它表示簡寫語法作爲'?:'的'if()' – MackieeE