use*_*195 1 javascript arrays refactoring
如果我有这一系列电影 ID
movies = [28, 14, 100, 53, 37]
Run Code Online (Sandbox Code Playgroud)
和这个对象数组。
genres = [
{id: 28, name: "Action"},
{id: 10770, name: "TV Movie"},
{id: 53, name: "Thriller"},
{id: 10752, name: "War"},
{id: 37, name: "Western"}
]
Run Code Online (Sandbox Code Playgroud)
我想返回一个匹配 id 的数组。例如 ['动作'、'惊悚'、'西部']。
我已经有了解决方案,但觉得它可以更好。重构此代码的最佳方法是什么?谢谢。
genre_array = []
movies.forEach(function(e){
genres.forEach(function(element){
if (element.id == e) {
genre_array.push(element.name)
}
});
});
Run Code Online (Sandbox Code Playgroud)
我会结合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))Run Code Online (Sandbox Code Playgroud)