Saya memiliki sebuah array objek yang berisi beberapa informasi. Saya tidak dapat merendernya sesuai urutan yang saya inginkan dan saya butuh bantuan untuk itu. Saya merendernya seperti ini:
this.state.data.map(
(item, i) => <div key={i}> {item.matchID} {item.timeM} {item.description}</div>
)
Apakah mungkin untuk mengurutkannya secara ascending dengan item.timeM
dalam fungsi map()
itu atau apakah saya harus mengurutkannya sebelum saya menggunakan map?
Mungkin inilah yang Anda cari:
// ... 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...
Metode sort
akan memutasi larik asli . Oleh karena itu saya membuat larik baru menggunakan metode concat
.
Anda perlu mengurutkan objek Anda sebelum memetakannya. Dan itu dapat dilakukan dengan mudah dengan fungsi sort()
dengan definisi pembanding khusus seperti
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>))
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>
)