javascript - 在 JavaScript 中创建一个 n 维数组

标签 javascript arrays

以下代码将生成 10 个数组,每个数组有 10 个子数组,每个数组有 10 个子数组,每个数组有 10 个子数组。

paths = [];

for (var i = 0, len_i = 10; i < len_i; ++i) { // 1st dimension
    paths.push([]);
    for (var j = 0, len_j = 10; j < len_j; ++j) { // 2nd dimension
        paths[i].push([]);
        for (var k = 0, len_k = 10; k < len_k; ++k) { // 3rd dimension
            paths[i][j].push([]);
            for (var l = 0, len_l = 10; l < len_l; ++l) { // 4th dimension
                paths[i][j][k].push([]);
                paths[i][j][k][l] = [];
            }
        }
    }
}

我最终需要在更多维度上做到这一点,并且很想知道是否有聪明的开发人员可以使用以下形式的函数来完成此任务:

function makePaths(quantityInEachArray, dimensions) {

  paths = [];

   quantityInEachArray = (typeof quantityInEachArray === "undefined") ? 10 : quantityInEachArray;
   dimensions = (typeof dimensions === "undefined") ? 4 : dimensions;

   // Do some magic

   return paths;

 }

该函数以其默认形式返回与我上面演示的 for 循环相同的内容。

我知道这不是标准做法,但我这样做是出于非常具体的原因,并且需要测试它的性能。

如何修改此代码以生成 nth 维数组?

最佳答案

您可以使用递归函数:

function nthArray(n, l) {
    if(n < 1) return;
    var arr = new Array(l);
    for(var i=0; i<l; ++i)
        arr[i] = nthArray(n-1, l);
    return arr;
}

关于javascript - 在 JavaScript 中创建一个 n 维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23119054/

相关文章:

javascript - Node-Red 中函数的输出在 html 中显示为 [object OBJECT]。模板

c - 用 C 中的另一个数组对多维数组进行排序

JavaScript - 创建一个未排序的数组,其中包含重复元素和唯一元素的总和

php - MySQL列包含PHP数组内容,循环

javascript - 如何使用原型(prototype)选择方法选择前几项?

javascript - 无法使用带有 TypeScript 的 React Native 找到变量符号

javascript - JQuery 从每个列表行中克隆最后一个元素

javascript - Jquery 计算有效,但在正确值之前添加了错误值

javascript - 如何注册用户,然后让他们保持登录状态并访问当前用户 Parse Server?

php - 查找元素在简单数组中的位置