import Card from 'src/components/Card' import { getTotalRow } from './format' const Main = () => { const data = [ { id: 1, }, { id: 2, }, { id: 3, }, { id: 4, }, { id: 5, }, { id: 6, }, { id: 7, }, ] const arrRowItems = getTotalRow(data, 3) return ( <> <div> {arrRowItems.map((rowItems, index) => { return ( <div key={'key-' + index}> <div style={{ display: 'grid', gridTemplateColumns: '1fr 30px 1fr 30px 1fr', }} > {rowItems.map((item, index) => { return ( <> <Card /> {index !== 2 ? ( <div style={{ width: '15 px' }}></div> ) : null} </> ) })} </div> {index !== arrRowItems.length - 1 ? ( <div style={{ marginTop: '30px' }}></div> ) : null} </div> ) })} </div> </> ) } export default Main
export const getTotalRow = (data: Array<any>, itemsPerRow: number) => { let allRow: any[][] = [] let rowItems: any[] = [] let isNewRow: boolean = false data.forEach((element, index) => { isNewRow = index % itemsPerRow === 0 ? true : false if (isNewRow && rowItems.length > 0) { // Push allRow.push([...rowItems]) // Reset rowItems = [] rowItems.push({ ...element }) } else { rowItems.push({ ...element }) } }) if (rowItems.length > 0) { allRow.push([...rowItems]) } return allRow } // [ // [{}, {}, {}], // [{}, {}, {}], // [{}, {}, {}] // ]
Leave a Reply