用于创建多维数组的Javascript函数

问题描述 投票:0回答:1

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

提前感谢!

javascript arrays multidimensional-array
1个回答
0
投票

传递维度数组是获得所需内容的简单map()操作。

map()的每次迭代都会返回一个新数组,其长度由该迭代的值确定

map()
© www.soinside.com 2019 - 2024. All rights reserved.