我想定义一个函数,该函数将创建一个n级深度的嵌套数组,每个level-1数组中包含n个元素。
因此,例如,下面的代码适用于2个级别:
function genMatrix() {
const matrix = [];
let total = 0;
for(let i=0; i<2; i++) {
matrix[i] = [];
for(let j=0; j<2; j++) {
total++;
matrix[i][j] = total;
}
}
return matrix;
}
这将输出以下内容:[ [ 1, 2 ], [ 3, 4 ] ]
我知道我可以通过简单地添加更多嵌套循环来扩展同样的想法。但我想要一个能生成任何级别的类似数组的函数。
这样的事情:
function genMatrix(levels) {... return matrix}
我试图递归地做这件事,但我没有走得太远:(
那么我怎样才能编写一个递归函数,以与上面例子类似的方式创建任何深度的数组?
答案 0 :(得分:1)
这是n级嵌套数组生成器:
function getMatrix(n) {
var total = 0, levels = n;
function genMatrix(n) {
var matrix = [];
for (var i = 0; i < levels; i++) {
matrix.push(n ? genMatrix(n - 1) : ++total);
}
return matrix;
}
return genMatrix(n)[0];
}
测试:
console.log(getMatrix(2));
// → [[1, 2], [3, 4]]
console.log(getMatrix(3));
// → [[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[10, 11, 12], [...], ...], ...]