[英]Trying to understand .some() in javascript
这是来自https://bl.ocks.org/mbostock/4183330的代码的一部分
我试图理解names.some(function(d)...})
工作原理。
不应该传递给.some()
的匿名函数返回一个条件语句,可以对“countires”进行评估吗?
names.some(..)
何时返回true或false?
为什么d.name = n.name
在没有“return”的情况下在“countries”中创建“name”属性?
queue()
.defer(d3.json, "world-110m.json")
.defer(d3.tsv, "world-country-names.tsv")
.await(ready);
function ready(error, world, names) {
var countries = topojson.feature(world,world.objects.countries).features
countries = countries.filter(function(d) {
return names.some(function(n) {
if (d.id == n.id) return d.name = n.name;
});
})
1)由于它使用names.some()
,该函数正在测试names
每个元素,而不是countries
。
2)当任何名称的id
与d.id
匹配且n.name
不为空时。
3)它将始终创建属性。 但如果没有return
, .some()
不会得到它可以评估的真值。
如果他们写的话可能会更容易理解:
return names.some(function(n) {
if (d.id == n.id) {
d.name = n.name;
return d.name;
} else {
return false;
}
});
return d.name = n.name;
将赋值和返回值组合到一个语句中。 并且代码正在利用这样的事实:当函数不执行return
语句时,函数隐式返回undefined
,而undefined
是falsey。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.