javascript - 在对象数组中查找匹配 ID 的最佳方法?
问题描述
如果我有这个电影 ID 数组
movies = [28, 14, 100, 53, 37]
和这个对象数组。
genres = [
{id: 28, name: "Action"},
{id: 10770, name: "TV Movie"},
{id: 53, name: "Thriller"},
{id: 10752, name: "War"},
{id: 37, name: "Western"}
]
我想返回一个匹配 id 的数组。例如['动作','惊悚','西部']。
我已经有一个解决方案,但觉得它可能会更好。重构此代码的最佳方法是什么?谢谢。
genre_array = []
movies.forEach(function(e){
genres.forEach(function(element){
if (element.id == e) {
genre_array.push(element.name)
}
});
});
解决方案
我会结合filter
和map
数组方法。用于filter
获取数组中的流派列表movies
,然后用于map
将其转换为名称列表。
例子:
const movies = [28, 14, 100, 53, 37]
const genres = [
{id: 28, name: "Action"},
{id: 10770, name: "TV Movie"},
{id: 53, name: "Thriller"},
{id: 10752, name: "War"},
{id: 37, name: "Western"}
]
// I would like to return an array of the matching ids. example [ 'Action', 'Thriller', 'Western' ].
console.log(genres.filter(g => movies.includes(g.id)).map(g => g.name))
推荐阅读
- swift - Swift:具有符合相等协议的嵌套枚举案例的更少代码
- android - 如何在材料设计TextInputLayout中实现错误消息的旧外观?
- java - 将 entityGraph 与会话一起使用
- javascript - Laravel Mix 中的 Webpack 别名为 node_modules
- typescript - Firebase 身份验证错误代码:无法导航文件
- javascript - 在打字稿中导入文件的正确方法是什么?
- excel - 如何创建嵌套循环以检查第二个列表中是否存在值
- java - Maven:如何编译?保持文件结构完整
- html - 使用引导折叠的手风琴角js
- c# - 如何使用 c# 查找一个元素是否包含来自另一个元素的值,而忽略 XML 中的大小写?