reactjs - 如何过滤掉 Typescript 中的空对象?
问题描述
我希望你能帮助我。
我正在使用 mapbox-gl 创建地图,并且正在渲染一些坐标 [lon, lat]。
虽然有些值是空的,所以我试图使用reducer将它们过滤掉,但是对于那些空值,我只创建一个我无法删除的空对象并得到一个错误(filteredPositions.lon -> error: Property '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>
解决方案
reducer 应该对列表的元素进行一些计算并只返回一个元素。典型的用例是计算列表元素的总和:
let list = [1,2,3,4,5]
let sum = list.reduce((prev, curr) => prev + curr, 0); // 15
如果要过滤列表。有一个filter
方法。尝试使用它。
const filteredPositions = Object.entries(last_position).filter(([k,v]) => v !== null)
推荐阅读
- asp.net-web-api - Autofac.Core.DependencyResolutionException 在 WEB API 中使用 InstancePerRequest()
- python - 如何使用 tensorflow 或 keras 重新训练具有新子集的线性回归模型?
- rust - Rust: Thread panics when run inside an iframe but not in a regular browser tab
- python-3.x - Django DetailView 不显示数据库中的内容
- java - Java + Micrometer @Timed 注解 + Spring 反应式 @Repository 可能吗?
- python - IPython.display:如何更改显示图像的宽度、高度和分辨率
- ios - 从 popUp 推送到 nextViewcontroller 不起作用
- html - 在容器内定位 div 的问题
- django - 如何在django的模板中返回一个方法的多个值
- python - 发布 MQTT、AWS IoT 时出现“SSL:CERTIFICATE_VERIFY_FAILED”错误