我正在尝试理解来自
的代码http://bl.ocks.org/d3noob/e34791a32a54e015f57d
我不明白代码试图缩放以下数据的部分:
// Scale the range of the data
x.domain(d3.extent(data, function(d) { return d.date; }));
y0.domain([0, d3.max(data, function(d) {
return Math.max(d.close); })]);
y1.domain([0, d3.max(data, function(d) {
return Math.max(d.open); })]);
为什么我们必须使用 d3.max 并且在 return 语句中还需要 Math.max?
不应该 d3.max(data, function(d) { return d.close ;} )
足以获得最大数据?为什么我们又需要另一个 Math.max 呢?
最佳答案
以下是d3.max和Math.max的区别——
与 d3.max() 中的 Math.max() 不同,元素使用自然顺序而不是数字顺序进行比较,即 ["120", "3"] 的最大值是 "3",而最大值[120, 3] 为 120。
d3.max() 忽略数组中传递的未定义值(这对于计算比例域很有用,同时仅考虑数据的定义区域)。
如果需要 Max 值的数组为空,d3.max() 返回 undefined,而 Math.max() 返回 -Infinity。
希望这些要点能帮助您理解 d3.max() 和 Math.max() 之间的区别..
关于javascript - d3.js 中的 d3.max() 与 math.max() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592557/