当前位置: 首页 > Web前端 > HTML

如何在JS中优雅的创建多维数组

时间:2023-03-28 13:15:01 HTML

前言努力做题80天,经常需要创建多维数组。比如我给你两个需求:创建一个10*10的数组,创建一个初始值为0的10*10的数组,取值为0-99。我想知道挖掘者将如何创建这两个数组?常规方法下面介绍三种创建多维数组的常用方法。for遍历最经典的方法就是for循环。以下是需求1的代码。constarr=[]for(leti=0;i<10;i++){arr[i]=[]for(letj=0;j<10;j++){arr[i][j]=0}}如果要实现第二个需求,改成arr[i][j]=0为arr[i][j]=i*10+j就好了map我用的使用地图创建需求constarr1=newArray(10).fill(0).map(()=>newArray(10).fill(0))需要两个constarr2=newArray(10).fill(0).map((_,i)=>newArray(10).fill(0).map((_,j)=>i*10+j))因为map不处理空对象,你必须创建数组后,首先使用fill为Array.from赋值。我经常看到Array.from用Array.from初始化一个数组。数组或可迭代对象转换为真正的数组,可以传递一个函数给第二个参数来修改新数组的元素,就像map类数组一样,只要是具有length属性的对象,都被认为作为类数组要求一个constarr1=Array.from({length:10},()=>Array.from({length:10},()=>0))要求两个constarr2=Array.from({length:10},(_,i)=>Array.from({length:10},(_,j)=>i*10+j))是不够的。以上三种遍历代码的方法用的太多了,map和Array。from有时不适合阅读但是在其他强类型语言中声明多维数组非常方便,看起来简单明了。intarr[10][10]它们的int类型的初始值默认为0。当然,如果要实现第二个需求,还得再做一遍。于是,我想实现一个简单明了的创建和设置多维数组初值的函数。递归函数实现先明确一下函数的要求fun(0,false,10)//创建一个长度为10,初值为0的数组fun(0,true,10,10)//创建一个10*10的数组,初始值为0-99。设计函数接收到的参数数组的初始值需要在设置初始值的时候对剩余的参数进行递增,说明每个维度的数组的长度码也是不难的,直接展示就可以了:如果是一个维数组,赋值。分配时,检查是否要增加它。如果它是多维的,递归地创建它。当你需要增加它时,你必须计算传入的初始值。functionfun(value,inc,...dimensions){//取第一个元素并创建一个数组constlength=dimensions.shift()constarr=newArray(length)if(dimensions.length==0){//一维数组赋值for(leti=0;ia*b,1)//初始值区间for(leti=0;i