D3.js 从JSON文件中提取选定的国家

D3.js 从JSON文件中提取选定的国家,d3.js,geojson,D3.js,Geojson,我用了一个很好的例子: 然而,我想修改这段代码以供我自己使用,并且只对选定的国家进行选择 我已经成功地将JSON文件读入了一个数组,代码现在正在查看该数组,但是如果满足条件,我看不到任何呈现一个或多个国家的方法 例如,如果我想简单地呈现ID为533的国家,我看不到任何附加条件的方法 谁能解释一下我是如何做到这一点的 我在这里编辑了我的原始问题,因为我已经设法做到了,但我相信有一种更优雅的方式来实现它: 原代码为: var svg = d3.select("#map").selectAll("

我用了一个很好的例子:

然而,我想修改这段代码以供我自己使用,并且只对选定的国家进行选择

我已经成功地将JSON文件读入了一个数组,代码现在正在查看该数组,但是如果满足条件,我看不到任何呈现一个或多个国家的方法

例如,如果我想简单地呈现ID为533的国家,我看不到任何附加条件的方法

谁能解释一下我是如何做到这一点的

我在这里编辑了我的原始问题,因为我已经设法做到了,但我相信有一种更优雅的方式来实现它:

原代码为:

  var svg = d3.select("#map").selectAll("svg")
      .data(topojson.feature(world, world.objects.countries).features)
我改为:

            var svg = chartDetails.plotArea.selectAll("svg")
            .data(
            function(d){
                a = topojson.feature(tempWorld, tempWorld.objects.countries).features
                var returnobject =[]
                $.each(a, function (i, v) { if (v.id == 826) { returnobject.push(v) } });
                return returnobject
            })
  • 826指联合王国

如果您的阵列如下所示:

var a = [];
a.push({id:1, name:'Argentina'});
a.push({id:2, name:'Bahamas'});
然后,您可能需要对其进行迭代以找到所需的密钥(id)。
看看这些:

您好,谢谢,但不是我的意思,我已经更改了代码以突出显示问题。我明白了。您可以做的一件小事是将(按id过滤)您的
returnedobject
置于svg之外,然后将其传递到
.data(retrunedobject)
。这将使代码更加可重用。