2017-08-29 6 views
3

Ich mache eine einfache App für die Rückgabe von Filminformationen von TMDb. Ich kann die Daten abrufen und nach Beliebtheit und durchschnittlicher Bewertung sortieren.Reagieren - JSON-Daten neu anordnen

Allerdings habe ich Probleme mit der ursprünglichen Bestellung von TMDb abgerufen.

Dies ist die Funktion, die ich die Daten sortieren verwenden:

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 
     }); 
} 

Nun, wenn ich ‚param.target.value‘ auf ‚Spiel‘ habe ich möchte die ursprüngliche Reihenfolge der Daten wiederherzustellen . Dies wurde in state.movies gespeichert, aber dies wird am Ende der Funktion geändert. Ist die beste Option, um den ursprünglichen Bestellstatus beizubehalten?

+0

Fügen Sie die Daten hinzu, mit denen Sie arbeiten ... – Dekel

+1

Warum bestellen Sie es nicht einfach beim Laden (nach Datum zum Beispiel) und verwenden Sie diese Sortierfunktion, um in den ursprünglichen Zustand zurückzukehren? – Rienk

Antwort

0

Die offensichtlichen Optionen sind, eine Kopie in der ursprünglichen Reihenfolge zu behalten, wie Sie erwähnten, oder ein Feld (z. B. "id") hinzuzufügen, das die ursprüngliche Reihenfolge aufzeichnet.

Wenn Sie wissen, wie die Daten ursprünglich von TMDb bestellt wurden, können Sie diese Reihenfolge möglicherweise wiederherstellen, ohne ein zusätzliches Feld hinzufügen zu müssen. Auf der anderen Seite, wenn die anfängliche Reihenfolge beliebig ist, sollten Sie die Daten vom Start wie @Rienk suggested sortieren.