用于创建多维数组的Javascript函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于创建多维数组的Javascript函数相关的知识,希望对你有一定的参考价值。
Haii
我想要一个用于创建多维数组的函数(纯javascript)(没有jQuery)。
我制作了一个完全硬编码的文件,它限制了我可以深入研究的尺寸数量。
function nestTriArray(first, second, third){
const arr = new Array(first);
for(let i=0; i<first; i++){
arr[i] = new Array(second);
for(let j=0; j<second; j++){
arr[i][j] = new Array(third);
}
}
return arr;
}
const test = nestTriArray(3,2,3);
console.log(test);
输出正确的结果:
//[[[undefined, undefined, undefined], [undefined, undefined, undefined]], [[undefined, undefined, undefined], [undefined, undefined, undefined]], [[undefined, undefined, undefined], [undefined, undefined, undefined]]]
我曾尝试在一个函数中使其具有多维性(而不是硬编码用于第四维,第五维的独立函数...),在该函数中,我将一个数组的长度传递给该函数。数组是维数,每个元素代表每个子数组的长度。它使用递归函数。并且输出错误。
这是尝试:
function nestArray(conf_array/*first, second, third*/){
conf_array = [1].concat(conf_array);
const arr = [];
let last_in_ref = arr;
function re(index){
last_in_ref[conf_array[index]] = new Array(conf_array[index+1]);
for(let i=0; i<conf_array[index]; i++){
last_in_ref[i] = new Array(conf_array[index+1]);
}
last_in_ref = last_in_ref[index];
console.log(arr);
index++;
if(index < conf_array.length){re(index);}
}
re(0);
return arr;
}
const test = nestArray([3,2,3]);
console.log(test);
输出错误:
//[[[undefined, undefined], [[undefined, undefined, undefined], [undefined, undefined, undefined], [[undefined], [undefined], [undefined], [undefined]]], [undefined, undefined], [undefined, undefined]], [undefined, undefined, undefined]]
提前感谢!
答案
传递维度数组是获得所需内容的简单map()
操作。
map()的每次迭代都会返回一个新数组,其长度由该迭代的值确定
map()
以上是关于用于创建多维数组的Javascript函数的主要内容,如果未能解决你的问题,请参考以下文章
带有嵌套for循环的Javascript多维数组-无法正常工作