acumulación: estoy tratando de hacer una copia de youtube y trabajando en la página de historial. Quiero que se muestre así: para agregar un divisor entre videos
Intenté hacer algo yo mismo y obtuve este código.
videos.map((video,index)=>{ if(index>=1){ console.log(videos[index-1].watched_time); if(videos[index-1].watched_time.split('T')[0]===video.watched_time.split('T')[0]) return <Video video={video} key={video.index}/>; else{ index-=1; return <Divider data={video.watched_time.split('T')[0]}/> }} else{ return <Video video={video} key={video.index}/>; } })} El resultado:
Recomendaría que primero agrupe los datos por fecha y luego ejecute el bucle.
Os dejo un ejemplo:
const videos = [ { name: 'v1', date: '2022-05-09' }, { name: 'v2', date: '2022-05-10' }, { name: 'v3', date: '2022-05-10' } ]; const grouped = videos.reduce((acc, ele) => { acc[ele.date] = (acc[ele.date] ?? []).concat([ele]); return acc; }, {}); Object.entries(grouped).map(([title, videos]) => { console.log(title); // Component header // <Header value={title} /> videos.map(video => { console.log(video); // Component Video // <Video video={video} key={video.index}/> }); });