It說D3.js中的方法鏈接在單行代碼中執行多個操作。但我不確定它在執行時關心的是性能。方法鏈接 - d3.js
例如, 通過方法鏈接,我們希望將代碼象下面這樣:
var data =[10,20,30,40]
wrap.selectAll("rect")
.data(data)
.enter()
.append("rect")
.attr("x",function(d, j) {return scale(j); })
.attr("y",function(d,i){ return (h-d)})
.attr("width",scale.rangeBand())
.attr("height",function(d,i){ return (d)})
.style("fill","red");
在上述代碼中,它會產生4個矩形,然後爲每個4個矩形我們設置的屬性「X」, 「Y」, 「寬度」, 「高度」。
節數矩形---> 4節數屬性( 「X」, 「Y」, 「寬度」, 「高度」) ---> 4節數重複中的每個屬性 - - > 4(正弦4個矩形)4個屬性的迭代次數---> 4 * 4 = 16次
這樣的迭代次數真的需要嗎?
通常我們做這樣的,
wrap.forEach(function(d,i){
d.setAttribute("x", scale(i))
d.setAttribute("y",(h-d))
d.setAttribute("width",w)
d.setAttribute("height",h)
})
在上述方法中,節數反覆使用 - > 4
所以什麼d3.js方法鏈的優勢,用上面提到的傳統方法選擇.daa 請說清楚??
不確定你的意思是「迭代」。通常,方法鏈可以讓你編寫更簡潔的代碼。你擔心演出有什麼特別的原因嗎? –
是的,迭代意味着在這裏執行循環的次數。 ofcourse方法鏈給出了更簡潔的代碼。但是執行的性能如何(執行循環所需的時間) – dakshna
代碼中沒有循環。 –