javascript - 带有地图 JavaScript 的条件过滤数组
问题描述
我正在尝试获取与genreFilter 具有相同流派音乐ID 的新曲目数组。
因此,如果genreFilter 为12,我需要新数组具有流派音乐ID = 12 的曲目。但是流派列表是其他数组,所以我认为我也需要对其进行迭代,然后返回曲目。
我在做下一个
const list = tracks
.map((track) =>
track.primary_genres.music_genre_list.filter((genre) => {
if (
genre.music_genre &&
genre.music_genre.music_genre_id === genreFilter
) {
return track;
}
})
);
但这只会返回通过过滤函数获得的流派,不会返回曲目。
解决方案
由于您想要的输出是轨道数组,因此您应该.filter
在tracks
数组上。在过滤器内部,检查s 是否.some
等于:music_genre_id
genreFilter
const list = tracks.filter(
track => track.primary_genres.music_genre_list.some(
genre => genre.music_genre?.music_genre_id === genreFilter
)
);
使用可选链接使事情简洁。如果您不能使用可选链接,那么它必须与您最初所做的类似:
genere => (
genre.music_genre &&
genre.music_genre.music_genre_id === genreFilter
)
推荐阅读
- node.js - 仅当我使用 Nginx 和通配符添加端口号时,子域才有效
- sql-server - 我应该估计 varbinary 的最大长度,以及如何?
- typescript - 将图像作为填充图案应用到多边形不会改变其样式
- node.js - 密码恢复未将 req.body.email 传递给 POST
- json - PostgreSQL json 的字符随 [] 变化
- reactjs - react build with gh-pages 生成错误的静态文件路径
- node.js - React中从父级到子级的回调函数
- mysql - 使用变量对 MySQL 表进行排序
- html - CSS翻转卡在过渡完成之前不显示背面相关子元素
- vue.js - 如何在没有任何错误的情况下将其他 JavaScript 文件连接到 Vue 文件?