概要
功能:自由创建任意长度的多维数组
原理
实现方式有二种:
1.通过函数和循环实现(调用函数代替递归)
2.通过字符串循环,然后eval函数转化为数组对象
技术细节
Array.setMoreArray=function(n,length){//创建多维数组,参数1是维度,2是一维的长度
var setArrayn=function(length,arr2){//创建多维数组
var arr=[];
for(let i=0;i<length;i++)
arr[i]=[...arr2];
return arr;
};
var arr=[];
arr.length=length;
var more_arr=[];
for(let i=1;i<n;i++){//
arr=setArrayn(length,more_arr);
more_arr=[...arr];
}
return more_arr;
};
Array.setMoreArray2=function(n,length){//字符串实现,创建多维数组
var str='',arr=`[${"[],".repeat(length)}],`;//二维数组
if(n==1&&length==0) return [];//返回一维空数组
if(length==1){//多维度的长度为一的数组
str= '['.repeat(n)+']'.repeat(n);
return eval(str);
}
for(let i=0;i<n-2;++i){//创建多维度的子元素(子元素为二维数组)
arr="["+arr.repeat(length)+'],';
}
str=arr.slice(0,-1);
console.log(`return ${str}`)
return eval(str);
//return (new Function(`return ${str}`))();
}
//Array.setMoreArray2(4,1);
var a=Array.setMoreArray2(2,1);
console.log(typeof a)
//a[0][0]
//Array.setMoreArray(4,2);
//Array.setMoreArray2(4,2);
小结
能自由创建数组,暂时不能设置初始元素值!