【问题标题】:A looping/recursive way to initialise a multidimensional array初始化多维数组的循环/递归方式
【发布时间】:2017-02-24 05:49:37
【问题描述】:

所以最终结果是我想创建类似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 长度很容易地初始化一个二维数组。但如果我想更深入,我想知道我应该如何去做。递归似乎是一个不错的路径,但目前想不出该怎么做。

【问题讨论】:

  • 请围绕您的要求添加更多详细信息
  • @Brijesh 把它改成了一个 sn-p,希望 console.log 能让事情更清楚一点

标签: javascript arrays recursion multidimensional-array


【解决方案1】:

你可以试试递归:

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))

【讨论】:

  • 不是我需要的。我已经编辑了我的代码,所以它是一个 sn-p。基本上我需要数组的每个部分的长度为两个。抱歉没有正确说明
  • 长度在深度上是否一致?
  • 是的,长度在深度上是一致的
  • 你可以用这个getNestedArray(2)然后不行吗?
  • @JonathanPortorreal 不,因为它都是长度为 1 的数组。如果您查看我的 sn-p,它将是原始数组的每个元素内的双数组,我还编辑了我的问题使它更清楚一点。
猜你喜欢
  • 2011-08-30
  • 2011-04-09
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 2015-08-01
  • 1970-01-01
相关资源
最近更新 更多