Javascript 在react中过滤geojson的最佳方法?

Javascript 在react中过滤geojson的最佳方法?,javascript,reactjs,leaflet,geojson,react-leaflet,Javascript,Reactjs,Leaflet,Geojson,React Leaflet,我希望通过向它提供一个ID数组来过滤一个类似这样的对象,该数组对应于我要过滤的特定属性。我正在使用React和传单,基本上是想过滤掉我的地图 让我们假设在我上面链接的geojson中有一系列多多边形。我想使用以下索引进行过滤,让ids=[0,1,5,6],这样在本例中,只有具有该id object_id的多个多边形才会显示。我不知道该怎么做。我试图使用传单提供的geojson过滤功能,但不确定如何实现。以下是我迄今为止基于此得出的结论: 从“反应传单”中输入L; geoFilter=功能,id=

我希望通过向它提供一个ID数组来过滤一个类似这样的对象,该数组对应于我要过滤的特定属性。我正在使用React和传单,基本上是想过滤掉我的地图

让我们假设在我上面链接的geojson中有一系列多多边形。我想使用以下索引进行过滤,让ids=[0,1,5,6],这样在本例中,只有具有该id object_id的多个多边形才会显示。我不知道该怎么做。我试图使用传单提供的geojson过滤功能,但不确定如何实现。以下是我迄今为止基于此得出的结论:

从“反应传单”中输入L; geoFilter=功能,id=>{ 如果feature.properties.index_right==id返回true; }; //过滤GEOJSON sliceGeo=async=>{ 设ids=[0,1,5,6]; ids.mapid=>{ //对于每个索引项筛选器 让data=L.geoJsonmyJson,{filter:sliceGeoid=id}.addTomap; 返回数据; }; };
我想我这样做可能效率很低,也不正确,所以希望有人能把我推向正确的方向。

制作返回过滤函数的函数很好。像这样:

const filterByIds = (ids) => {
  return futures => ids.every(id => feature.properties.index_right === id)
}
此函数接受一个ID数组,并返回专门用于ID的筛选器函数。例如,给定[1,2,3],返回的功能=>[1,2,3]。everyid=>feature.properties.index\u right==id。此筛选函数检查[1,2,3]中是否包含index\u right

加:

我检查并发现了更有用的函数

const filterByIds = (ids) => {
  return futures => ids.includes(feature.properties.index_right)
}
用法:

const ids = [0, 1, 5, 6];
const data = L.geoJson(myJson, { filter: filterByIds(ids) }).addTo(map);
筛选器接受函数,所以倾向于认为应该将其作为删除圆括号的函数,但若函数返回函数,则通常使用圆括号调用函数。以上就是这样。

试试这个:

let ids = [0, 1, 5, 6];

geoFilter = (feature) => {
    return ids.includes(feature.properties.index_right)
};

L.geoJson(myJson, { filter: geoFilter }).addTo(map);

geoJson过滤器选项需要一个带有一个参数的函数功能,我用数组更改您的回调。如果ids数组中正好包含feature.properties.index,则原型包含返回true的函数。

谢谢!但我不确定如何正确地应用这一点。你能给我举个如何使用filterByIds函数的例子吗?似乎我不应该再映射ID了?添加用法。很简单!