javascript - JavaScript 过滤器代替映射
问题描述
我有这个代码:
const uniform = {
zone: 'BOTTOM'
}
const sizes = [
{
_id: 'sizeId2',
zones: ['BOTTOM'],
value: '48'
},
{
_id: 'sizeId3',
zones: ['BOTTOM'],
value: '42'
},
]
sizes.map((size) => (size.zones.includes(uniform.zone) ? {
_id: size._id,
value: size.value,
} : null))
https://jsfiddle.net/pmiranda/945fsdw7/5/
// here I'm trying another way than map and the ternary
console.log(sizes.filter((size) => (size.zones.includes(uniform.zone) && {
_id: size._id,
value: size.value,
})))
我想知道,我怎么能用 替换map
它filter
?因为我认为使用 null 的三元映射可以以更好的方式完成,另外,在map
我null
最终得到的方式中,我不想将它添加到数组中
解决方案
我认为你会过滤然后映射:
sizes.filter(size => size.zones.includes(uniform.zone)).map(size => ({
_id: size._id,
value: size.value,
}));
您可能需要返回结果,或将其分配给变量。
推荐阅读
- java - Java8流:将列表转换为另一个列表时出现ConcurrentModificationException
- git - Git Fetch - 使用特定用户的 ssh 密钥
- node.js - Heroku 到后端的路由在部署中不起作用
- ios - 错误 ITMS-90683:Info.plist 中缺少目的字符串
- python - Flask:在 Travis 上运行时找不到模板
- shiny - 如何使用 Shiny 在传单地图上映射一系列值?
- mysql - 增量值取决于另一个
- tcp - 中文tracker TCP帧解码
- python-3.x - 使用散景滑块过滤绘图上的数据
- php - 我如何使用 laravel 获得今天、过去 7 天和过去 30 天的利润