我有一个
featureCollection
。每个元素都有 properties
,其中又包含条目 arr
。 arr
包含 []
或 ["a",.... n]
。我想删除 featureCollection
中的每个元素,其中 arr.length !== 0
.
我该如何在
turf.js
(版本5.1.6)中做到这一点?
有固有的功能吗?或者我必须使用简单的 dict
突变,原生于 JS
?
从 TurfJS v5.1.6 开始,TurfJS 中没有通过特征属性过滤特征集合的功能。
对于这类事情,只需使用本机 JavaScript 函数,例如@Rajesh 建议的数组过滤方法。
var matchingFeatures = featureCollection.features.filter(function (feature){
return feature.properties.arr.length === 0
})
您可以使用
featureReduce
和 featureCollection
(来自 @turf/meta
和 @turf/helpers
)有效地实现这一目标
Feature,
Geometries,
Properties,
featureCollection,
} from "@turf/helpers";
import { featureReduce } from "@turf/meta";
export function filterGeo(input: any, func: (feature: any) => boolean): any {
featureCollection(
featureReduce(
input,
(arr, cur) => {
if (func(cur)) {
arr.push(cur);
}
return arr;
},
[] as Array<Feature<Geometries, Properties>>
)
);
}
const filtered = filterGeo(featureCollection, feature => (
feature.properties.arr.length === 0
));