首页 > 解决方案 > 在对象数组中查找匹配 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)
    } 
  });
});

标签: javascriptarraysrefactoring

解决方案


我会结合filtermap数组方法。用于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))


推荐阅读