[英]How would you compare two arrays and filter between the two arrays?
所以我的第一個狀態為收藏夾:
這是我的第二個狀態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 }
}));
}
你可以創建從所有條目的新數組sortedFavorites
不在watchedFilter
。
由於兩個數組中都有單獨的對象,所以includes
將不起作用,因為它將檢查確切的對象引用 。 您可以改為檢查id
是否相同:
filterFavorites = () => {
this.setState(previousState => {
const sortedFavorites = previousState.sortedFavorites.filter(
fav => !previousState.watchedFilter.some(w => w.id === fav.id)
);
return { sortedFavorites };
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.