我在JavaScript中有2个数组。其中一个需要根据另一个属性进行过滤。
我有一个这样的电影列表:
[
{
id: 1,
type: 'movies',
attributes: {
name: 'Batman'
}
},
{
id: 2,
type: 'movies',
attributes: {
name: 'Spiderman'
}
},
...
]
然后我有另一个数组,其中包含用户观看过的电影,但它们按照JSON API规范的关系位于数组的嵌套对象中。
[
{
id: '1',
type: 'moviesWatched',
attributes: {
comment: 'Excellent film, would recommend to anyone who loves a action film!'
},
relationships: {
movie: {
data: {
type: 'movies',
id: 2
}
}
}
}
]
我需要实现的是,我需要交叉引用watchList[].relationships.movie.data.id
中的ID与第一个数组。显然,此列表的制作时间要长得多,但我希望实现的是拥有完整的电影列表,该使用列表中观看的电影带有基于2格式的这种格式的电影名称,从而省去了我不必要存储的麻烦数据库内部的数据。
数组的结果类似于...
[
{
id: 1,
type: 'movies',
attributes: {
name: 'Batman'
},
meta: {
watched: false
}
},
{
id: 2,
type: 'movies',
attributes: {
name: 'Spiderman'
},
meta: {
watched: true
}
}
]
这是我目前正在使用的东西,正在工作,但是我不知道是否有更好的方法来解决这个问题...
movies.map((movie) => {
const watched = watchedMovies.find((searchable) => {
return searchable.relationships.movie.data.id === searchable.id;
});
movie.meta.watched = watched || false;
return movie;
});