83 votes

Trier un tableau d'objets dans React et les rendre

J'ai un tableau d'objets contenant des informations. Je ne parviens pas à les restituer dans l'ordre que je souhaite et j'ai besoin d'aide à ce sujet. Je les restitue comme suit :

this.state.data.map(
    (item, i) => <div key={i}> {item.matchID} {item.timeM} {item.description}</div>
)

Est-il possible de les trier par ordre croissant avec item.timeM en ce sens que map() Est-ce que je dois les trier avant d'utiliser la carte ?

165voto

Mμ. Points 4343

C'est peut-être ce que vous recherchez :

// ... rest of code

// copy your state.data to a new array and sort it by itemM in ascending order
// and then map 
const myData = [].concat(this.state.data)
    .sort((a, b) => a.itemM > b.itemM)
    .map((item, i) => 
        <div key={i}> {item.matchID} {item.timeM}{item.description}</div>
    );

// render your data here...

La méthode sort modifiera le tableau d'origine . Je crée donc un nouveau tableau à l'aide de la fonction concat méthode.

24voto

Shubham Khatri Points 67350

Vous devrez trier vos objets avant de les cartographier. Et cela peut être fait facilement avec un sort() avec une définition de comparateur personnalisée comme

var obj = [...this.state.data];
obj.sort((a,b) => a.timeM - b.timeM);
obj.map((item, i) => (<div key={i}> {item.matchID}  
                      {item.timeM} {item.description}</div>))

8voto

this.state.data.sort((a, b) => a.item.timeM > b.item.timeM).map(
    (item, i) => <div key={i}> {item.matchID} {item.timeM} {item.description}</div>
)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X