簡體   English   中英

您將如何比較兩個數組並在兩個數組之間進行過濾?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM