Javascript 将数组渲染为矩阵(每行n个项目)

Javascript 将数组渲染为矩阵(每行n个项目),javascript,react-native,Javascript,React Native,我有一个视图,其中有一个地图功能: <View style={{width: 500, height: 500}}> {[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15].map((x,i) => { return( <View style={{width: 50, height: 50, backgroundColor: 'red'}}></View>

我有一个视图,其中有一个地图功能:

<View style={{width: 500, height: 500}}>
      {[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15].map((x,i) => {
            return(
                   <View style={{width: 50, height: 50, backgroundColor: 'red'}}></View>
            )
      })} 
</View>

{[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15].map((x,i)=>{
返回(
)
})} 
如何将其映射为模式?像连续5次


您可以使用flexbox和flexWrap实现这一点,请参见下面给出的示例

您可以阅读此文档以实现此目的

您可以使用flexbox和flexWrap实现这一点,请参见下面给出的示例

您可以阅读此文档以实现此目的

您可以将源数组拆分为所需长度的块(行),并使用嵌套的
.map()
循环渲染其中的行和单元格:

const chunkArr = (arr, size) => 
   arr.reduceRight((r,i,_,s) => (r.push(s.splice(0,size)),r),[])
以下是该概念的完整现场演示:

const{useState}=React,
{render}=ReactDOM,
rootNode=document.getElementById('root'))
常数cellData=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
常数矩阵=({cells})=>{
const rows=cells.reduceRight((r,i,u,s)=>(r.push(s.splice(0,5)),r),[])
返回(
{
rows.map((row,i)=>(
{
行映射((单元格,j)=>(
{cell}
))
}
))
}
)
}
渲染(
,
根节点
)
.wrapper{
显示器:flex;
弯曲方向:立柱;
}
.行{
显示器:flex;
弯曲方向:行;
}
.细胞{
宽度:20px;
高度:20px;
保证金:5px;
背景色:红色;
颜色:#fff;
文本对齐:居中;
}

您可以将源数组拆分为所需长度的块(行),并使用嵌套的
.map()
循环渲染其中的行和单元格:

const chunkArr = (arr, size) => 
   arr.reduceRight((r,i,_,s) => (r.push(s.splice(0,size)),r),[])
以下是该概念的完整现场演示:

const{useState}=React,
{render}=ReactDOM,
rootNode=document.getElementById('root'))
常数cellData=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
常数矩阵=({cells})=>{
const rows=cells.reduceRight((r,i,u,s)=>(r.push(s.splice(0,5)),r),[])
返回(
{
rows.map((row,i)=>(
{
行映射((单元格,j)=>(
{cell}
))
}
))
}
)
}
渲染(
,
根节点
)
.wrapper{
显示器:flex;
弯曲方向:立柱;
}
.行{
显示器:flex;
弯曲方向:行;
}
.细胞{
宽度:20px;
高度:20px;
保证金:5px;
背景色:红色;
颜色:#fff;
文本对齐:居中;
}

是的@yevGen gorbunkov很抱歉没有早点回复这是一个非常忙碌的周末。非常感谢您的解决方案!别担心。不客气。Yep@yevGen gorbunkov很抱歉没有早点回复。周末很忙。非常感谢您的解决方案!别担心。不客气。