d3.max() 与 d3.js 中的 math.max() 有何不同?

What is the different between d3.max() vs. math.max() in d3.js?

我正在尝试理解

中的代码

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); })]);

为什么我们必须在 return 语句中使用 d3.max 并且还需要 Math.max?

不应该 d3.max(data, function(d) { return d.close ;} ) 足以获得最大数据?为什么我们还需要另一个 Math.max ?

以下是 d3.max 和 Math.max 之间的区别 -

  1. 与 Math.max() 不同 d3.max() 元素使用自然顺序而不是数字顺序进行比较,即 ["120", "3"] 的最大值是"3", 而 [120, 3] 的最大值为 120.

  2. d3.max() 忽略数组中传递的未定义值(这对于计算比例域很有用,同时只考虑数据的定义区域)。

  3. 如果需要最大值的数组为空,d3.max() returns undefined where as Math.max() returns -无限.

希望这些要点能帮助您理解 d3.max() 和 Math.max() 之间的区别..