【发布时间】:2020-08-13 13:49:42
【问题描述】:
我希望你能帮助我。
我正在使用 mapbox-gl 创建地图,并且正在渲染一些坐标 [lon, lat]。
虽然有些值是 null,所以我尝试使用 reducer 将它们过滤掉,但对于那些空值,我只创建一个无法删除的空对象并出现错误( filtersPositions.lon -> 错误:类型“{}”上不存在属性“lon”)
我怎样才能只渲染那些非空值的集群?这是我的代码:
<Cluster ClusterMarkerFactory={clusterMarker} zoomOnClick>
{systems.map(({ last_position, id }) => {
const filteredPositions = Object.entries(last_position).reduce((a,[k,v]) => (v == null ? a : {...a, [k]:v}), {})
return (
<SystemMarker
key={id}
coordinates={[filteredPositions.lon, filteredPositions.lat]}
heading={0}
id={id}
onClick={onSystemSelect}
/>
)
})}
</Cluster>
【问题讨论】:
-
是this你需要什么?
-
谢谢,但它就像我的 reducer 一样工作,但没有解决我的问题,因为对象中的值要么都是 null,要么不为 null。当它们为空时,会创建一个空对象,我要做的是删除空对象。
-
哦,只需检查
Object.entries是否为空,然后执行delete obj[prop]。如果你想删除一个原始对象,你必须这样做obj = undefined
标签: reactjs typescript filter