我有一组从MongoDB中提取的电影,名为movieList:
[
{
movie: {
_id: 5fde62aa0cec1598fda103ac,
title: 'Wander'
},
status: 2
},
{
movie: {
_id: 5fde62930cec1598fd9d426c,
title: 'Mulan'
},
status: 1
},
{
movie: {
_id: 5fde62a10cec1598fd9f9222,
title: 'Greenland'
},
status: 0
}
]
我有一个电影对象ID数组(不是字符串(,名为removeMovies:
[
5fde62a20cec1598fd9fa275,
5fde62a30cec1598fd9fec86,
5fde62a50cec1598fda034cf,
5fde62a50cec1598fda03f24,
5fde62930cec1598fd9d426c
]
我通常过滤的方式(如果这些是字符串或数字,而不是对象ID(返回一个空数组:
const filteredMovieList = movieList.filter((movie) => {
return removeMovies.includes(movie.movie._id)
})
有什么想法吗?
我认为您可以使用toString
并首先将removeMovies对象映射到这些字符串:
const filteredMovieList = movieList.filter((movie) => {
return removeMovies
.map(movieId => movieId.toString())
.includes(movie.movie._id.toString())
})
作为https://docs.mongodb.com/manual/reference/method/ObjectId/,我认为您也可以使用str
属性。
const filteredMovieList = movieList.filter((movie) => {
return removeMovies
.map(movieId => movieId.str)
.includes(movie.movie._id.str)
})
解决方案之一是将both objectId强制转换为字符串,例如
const filteredMovieList = movieList.filter((movie) => {
return removeMovies.filter(rmMovie => String(rmMovie) == String(movie._id)).length
== 0 ? false : true
})