所以我的第一个状态为收藏夹:
这是我的第二个状态watchedFilter:
所以sortedFavorites状态包含watchedFilter状态包含的所有内容,我要做的是比较两个数组并过滤出sortedFavorites和watchedFilter都具有的所有内容。所以我不希望watchedFilter中的任何电影都归于sortedFavorites。
例如:sortedFavorites = {1,2,3,4,5} watchedFilter = {1,2,3} 我想要的结果是:sortedFavorites = {4,5}
这是我尝试过的,但是它什么也没做:
filterFavorites = () => {
let showFavorites = this.state.sortedFavorites.filter(fav => !this.state.watchedFilter.includes(fav))
this.setState(state => ({
...state,
...{ sortedFavorites: showFavorites }
}));
}
答案 0 :(得分:0)
您可以创建一个新数组,其中包含sortedFavorites
中所有不在watchedFilter
中的条目。
由于两个数组中都有单独的对象,includes
将不起作用,因为这将检查确切的对象引用。您可以改为检查id
是否相同:
filterFavorites = () => {
this.setState(previousState => {
const sortedFavorites = previousState.sortedFavorites.filter(
fav => !previousState.watchedFilter.some(w => w.id === fav.id)
);
return { sortedFavorites };
});
}