javascript - React - map.filter.map 的最有效方式
问题描述
我有以下反应代码。我有一组组和一组带有各自组的菜单项。我想像这样按组显示菜单项...
groups.GroupDetail.map(group => {
return (
menuList.filter(menuItems => { return menuItems.group == group.name }).map(item => {
return <p style={{ width: '100%' }}>{item.name}</p>
})
)
})
是否有更有效的方法来遍历组并过滤相应的菜单项?我觉得应该有一个我可以使用的更高级别的 js 数组方法。
解决方案
.filter
其次.map
是很好,但利用 ES6 箭头函数的隐式返回会更简洁:
groups.GroupDetail.map(
({ name }) => menuList
.filter(({ group }) => group === name })
.map(({ name }) => <p style={{ width: '100%' }}>{name}</p>)
};
reduce
是一种选择,但我对此并不满意:
groups.GroupDetail.map(
({ detailName }) => menuList
.reduce((a, { group, name }) => group === detailName ? [...a, <p style={{ width: '100%' }}>{name}</p>] : a, [])
};
推荐阅读
- firebase - Firebase - 单击按钮时在云功能中运行“functions.https”
- css - 覆盖 Glyphicon 样式
- node.js - AWS Lambda 转码器返回失真的音频
- sql-server - 如何使用 cte 重写 while 循环
- spring - Spring Security 中的自定义身份验证控制器
- json - 弹性搜索不同的字段
- firebase - 使用 Firestore 作为 SQL 聚合的缓存
- shell - 获取 502 Bad Gateway,然后重定向到另一个网站。刮擦
- node.js - 在同步代码中使用异步函数
- css - 显示动画线的箭头