D3标度-为什么乘以1有区别?

时间:2019-01-11 02:34:03

标签: javascript d3.js

我正在使用d3.js处理退休计算器/条形图。我建立了条形图以显示静态数组,然后将其连接到我的退休方程式。

当我将图表连接到计算器时,即使输入数组相同,我的yScale还是错误的。我通过更改此方法来解决它:

Dim ieObj As InternetExplorer Set ieObj = CreateObject("InternetExplorer.Application") Dim htmlEle As Object Dim spanEle as Object Dim itemurl As String Itemurl = “url of interest” ieObj.navigate itemurl 'in this case, the web page is has the same name as the itemNum Do While ieObj.readyState <> READYSTATE_COMPLETE 'wait by repeating loop until ready Loop For Each htmlEle In ieObj.document.getElementsByClassName("nav-list-item") For Each spanEle in htmlEle.getElementsByTagName("span") Debug.Print spanEle.innertext Next spanEle Next htmlEle

对此:

const yScale = d3.scaleLinear().domain([0, d3.max(fvArr,(d)=>d[1])]).range([height-padding,0]);

为什么要这样做? Codepen是here

1 个答案:

答案 0 :(得分:2)

这里的问题是您的数据包含字符串,而不是数字。

如果您查看fvArr数组,则会看到以下内容:

[[0, "30000"], [1, "32800"], [2, "35768"] etc...]

因此,乘法在这里所做的只是将结果强制为数字。检查一下:

console.log(typeof("5" * 1))

这与使用一元加号相同,但更为常见:

console.log(typeof(+"5"))