繁体   English   中英

试图在javascript中理解.some()

[英]Trying to understand .some() in javascript

这是来自https://bl.ocks.org/mbostock/4183330的代码的一部分

我试图理解names.some(function(d)...})工作原理。

  1. 不应该传递给.some()的匿名函数返回一个条件语句,可以对“countires”进行评估吗?

  2. names.some(..)何时返回true或false?

  3. 为什么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)当任何名称的idd.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM