forEach
块内上面的增量运算符在做什么,特别是:
d3.tsv('data.tsv', (err, data) => {
// clean the data
data.forEach(d => {
d.date = new Date(d.date); // x
++d[city]; // y`
它如何改变比例?
完整代码:Scales and Axes
这类问题(“这件事在这里做什么?”)有时很难回答,因为我们不知道作者脑子里有什么。但是在这种情况下,我相信我有一种直觉:作者只是不正确地将字符串强制为数字。
您可能知道,TSV数据已加载并解析为字符串,因此,当字段中有数字时,必须强制它们。最常见的方法是,在行函数中:
d.foo = +d.foo;
return d;
如您在此演示中所看到的,如果只执行+d.foo
,则该对象什么也没有发生:
const obj = {
value: "42"
};
+obj.value;
console.log(obj)
console.log(typeof obj.value)
话虽如此,我相信该代码的作者刚刚发现,如果您使用前缀增量运算符,则可以更改对象而不必返回它:
const obj = {
value: "42"
};
++obj.value;
console.log(obj)
console.log(typeof obj.value)
并且在这里您可以看到我为什么说错误地:该值正在增加。如果查看链接的Blockbuilder中的数据,您会看到San Francisco的所有数字都比TSV中的实际数字大1个单位。