一种循环/递归方法,用于初始化多维阵列



,因此最终结果是我想创建类似array[2][2][2]或更深层次的东西。array[2][2][2][2][2]...(它们的均匀长度大于1)。

因此,每个数组的长度将超过x,深度为n

现在我有:

var array = new Array(2); //length of 2 is just an example
for (let i = 0; i < array.length; i++) {
  array[i] = new Array(2);
}
console.log(array);

我的想法是:

function (length, depth)
{
    //length determines how long each array will be (all arrays are same length)
    //depth determines are far we go into it
}

因此,这显然我当前的代码仅在x长度上很容易启动二维数组。但是,如果我想更深入,我想知道该怎么做。递归似乎是一条不错的道路,但目前无法想到如何做。

您可以尝试递归:

function getNestedArray(depth, len) {
  if (depth > 1) {
    var a = [];
    for (var i = 0; i < len; i++) {
      a.push(getNestedArray(depth - 1, len))
    }
    return a;
  } else {
    return new Array(len);
  }
}
console.log(getNestedArray(5, 2))
console.log(getNestedArray(3, 4))
console.log(getNestedArray(2, 4))

最新更新