Javascript 如何在json数据中显示值

Javascript 如何在json数据中显示值,javascript,arrays,json,list,filtering,Javascript,Arrays,Json,List,Filtering,想知道是否有人能帮我写一些JavaScript 我有一个json文件,它看起来与下面的一个类似,尽管这是原始文件的精简版本,它要大得多。我正试图从中获取一些坐标,并使用它们在谷歌地图上勾勒出特定区域的轮廓,我自己设置了一个提琴来测试: 我正在尝试筛选此上的一些值。当我在过滤器中为LEVEL1_COD键指定一个值时,我试图获取“坐标” 我通过运行下面的程序来实现这一点,在这个例子中,它显示了欧洲的坐标,因为它的LEVEL1_COD值设置为1。注意:这里的json变量使用的是上面我的代码片段的完整

想知道是否有人能帮我写一些JavaScript

我有一个json文件,它看起来与下面的一个类似,尽管这是原始文件的精简版本,它要大得多。我正试图从中获取一些坐标,并使用它们在谷歌地图上勾勒出特定区域的轮廓,我自己设置了一个提琴来测试:

我正在尝试筛选此上的一些值。当我在过滤器中为LEVEL1_COD键指定一个值时,我试图获取“坐标”

我通过运行下面的程序来实现这一点,在这个例子中,它显示了欧洲的坐标,因为它的LEVEL1_COD值设置为1。注意:这里的json变量使用的是上面我的代码片段的完整版本

var json = JSON.parse($.getJSON({'url': "https://raw.githubusercontent.com/tdwg/wgsrpd/master/geojson/level1.geojson", 'async': false}).responseText);

var coords = json.features.filter(function (el) {
    return (el.properties.LEVEL1_COD == "1");
})[0].geometry.coordinates

console.log(coords);
Console.log向我显示:

[24.128105619999872,34.858005329767494][ 24.128505619999856,34.808905329767484],[24.044605619999857,34.850005329767484],[24.074605619999858,34.868605329767476],[20.819105619999874,80.719105329767487]]

我不明白的是,如何将它从“等于”类型更改为“包含”类型的过滤器

例如,如果我有一个LEVEL1_COD值的列表,比如说1,2,5,我想过滤这些值,这样我就可以看到每一组坐标,你会怎么做呢?我想在地图上画出这些地区的轮廓

我确信需要调整的线条是:

返回(el.properties.LEVEL1_COD==“1”)

但在尝试了各种各样的东西后,我无法让它返回多个集。您是否需要循环每个项目来执行此操作?还是有更聪明的方法?速度有点重要,因为我将使用的json文件相当大

谢谢
Paul

看起来您正在填充地图框。您可以使用软件包的过滤器

this.map.setFilter('YOUR_LAYER', ['==', 'LEVEL1_COD', 'YOUR_VALUE']);

如果您希望根据提供的输入(多个值,即一个数组)从数据中获取多个匹配元素,
array。可以使用一些

下面我模拟了几个例子,希望这就是你要找的

let data={type:'FeatureCollection',features:[{type:'Feature',properties:{LEVEL1_COD:1,LEVEL1_NAM:'european',},geometry:{type:'MultiPolygon',座标:[[24.128105619999872,34.858005329767494],[24.128505619999856,34.8089053297484],[24.044605619999857,34.850053767484],[24.0746060566199858,34.867476],[24.86297676],[20.819105619999874,80.719105329767487],],],],],},{类型:'Feature',属性:{LEVEL1_COD:2,LEVEL1_NAM:'AFRICA',},几何:{类型:'MultiPolygon',坐标:[[[32.954405619999847,-26.058594670232509],[32.8952056119999871,-26.04079470232515],[32.98056199889],-25.97279470232517],[32.9856943258],[32.98358],[32.954405619999847,-26.058594670232509],],],],},{类型:'Feature',属性:{LEVEL1_COD:3,LEVEL1_NAM:'australisia',},几何:{类型:'MultiPolygon',坐标:[[169.18540561999841,-52.576994670232516],[169.028205619999852,-52.559194670232515],[169.0007056199877 52.507167515],[169.998751352],[169.5071717199992513],[199872],[19987352],[199872],],{类型:'Feature',属性:{LEVEL1_COD:4,LEVEL1_NAM:'ASIA-TROPICAL',},几何:{类型:'MultiPolygon',坐标:[[96.914105619999845,-12.198094670232521],[96.902405619999882,-12.199994670232513],[96.914705619999864,--12.151994670232511],[96.924405619999874,-12.1827970232511],[25296.9141056199845,-,],{类型:'Feature',属性:{LEVEL1_COD:5,LEVEL1_NAM:'SOUTHERN AMERICA',},几何:{类型:'MultiPolygon',坐标:[[[[[[-67.2127944380000133,-55.893594670232517],-67.24694380000132,-55.894994670232514],-67.41389438000013,-55.832194670232518],-67.246994380000132,-55.828094670232517]};
常量getFilteredData=(数据,输入)=>
data.features.filter(feature=>{
返回input.some(i=>i==feature.properties.LEVEL1\u COD);
});
让输入=[1];
让FilterData=getFilteredData(数据,输入);
console.log(filterdData);
输入=[1,2,5];
FilterData=getFilteredData(数据,输入);
console.log(filterdData);
输入=[1,7];
FilterData=getFilteredData(数据,输入);
console.log(filterdData);
。作为控制台包装器{
最大高度:100%!重要;

}
可能会声明一个类似于
levels=[1,2,5]
的变量,然后将过滤条件更改为
levels.includes(el.properties.LEVEL1\u COD)
我没有想到这一点,谢谢。我创建了一个提琴:我想我可能做得不对,我试图根据这些值勾勒出一些地区/国家的轮廓。我试图使用谷歌地图,脚本最终会进入一个更大的网站,在那里,这些值将根据我的用户信息进行动态更改nput等。无论如何,我会继续玩,谢谢你,谢谢你,谢谢你,这是非常有用的。我今天花了相当多的时间在这方面,我现在可以根据你的示例返回数据,但我似乎无法编写代码来正确地形成json,以便在地图上显示多个区域。I'v我一直在尝试连接这些值,但我显然做了一些非常错误的事情,因为它与1个值一起工作,但不超过1个。我怀疑我尝试这样做的方式会严重破坏事情,可能是格式问题。还有一个问题,你知道是否可以自动将地图缩放到选定对象的边界区域?最好就此提出一个新问题?我已经修改了您共享的小提琴。是链接。出于示例目的,我添加了由google maps本身提供的标记和信息窗口。Ty,所有操作现在都完成了完成版本(在要加载的文件周围有几个提示)多亏了这个黑麦,在Nitihish的帮助下,我几乎做到了我现在需要做的事情。我现在只需要找到一种方法,根据选择的区域设置缩放,我现在不知道该怎么做,但我肯定会做到的。
this.map.setFilter('YOUR_LAYER', ['==', 'LEVEL1_COD', 'YOUR_VALUE']);