2017-08-29 62 views
3

我正在製作一個簡單的應用程序,用於從TMDb返回電影信息。我可以檢索數據並按受歡迎程度和平均投票順序排列。反應 - 重新排序JSON數據

不過,我與它返回從TMDB檢索到的原始順序掙扎。

這是我使用對數據進行排序的功能:

sortBy = (param) => { 
     let movies = []; 
     if(param.target.value === 'popularity'){ 
      this.setState({sort:'popularity'}) 
      movies = this.state.movies.sort((a,b) => { 
      return parseFloat(b.popularity) - parseFloat(a.popularity) 
      }); 
     } else if (param.target.value === 'vote_average'){ 
      this.setState({sort:'vote_average'}) 
      movies = this.state.movies.sort((a,b) => { 
      return parseFloat(b.vote_average) - parseFloat(a.vote_average) 
      }); 
     } 
     this.setState({ 
      movies: movies 
     }); 
} 

現在,如果我有「param.target.value」設置爲「匹配」我想恢復數據的原始順序。它存儲在state.movi​​es中,但是在函數結束時會被更改。最好的選擇只是爲了保持一些原始的訂單狀態?

+0

添加您使用的數據... – Dekel

+1

爲什麼不在加載時(例如按日期)命令它並使用該排序功能回到原始狀態? – Rienk

回答

0

顯而易見的選擇是按照您提到的原始順序保留副本,或添加一些記錄原始順序的字段(例如「id」)。

如果您知道數據最初是如何由TMDb訂購的,那麼您可以在不添加額外字段的情況下恢復該訂單。另一方面,如果初始順序是任意的,可以考慮從開始對數據進行排序,如@Rienk suggested