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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用于创建多维数组的Javascript函数相关的知识,希望对你有一定的参考价值。

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

提前感谢!

答案

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

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