2017-08-29 132 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