想要基于列数在javascript中创建二维m x n数组,并在我的函数中将其作为参数输入,则将从另一个参数(即数组)创建行。我希望达到的目标-预期结果:var arr = [0,1,2,3,4,5,6,7,8,9]function TwoDimensionalArray(numRows, numCols) {//Magic happens here!}TwoDimensionalArray(arr, 4);如您所见,下面是一个3 x 4的矩阵,并且具有理想的结果[[0,1,2,3], [4,5,6,7],[8,9]]输入大小没有区别,列数是关键因素和决定因素。我目前所拥有的-不需要的结果:var arr = [0,1,2,3,4,5,6,7,8,9,10,11,12,13]function TwoDimensionalArray(numRows, numColumns) { var twoD = []; for (var row = 0; row < numRows.length; ++row) { var cardIndex = numRows[row] // console.log(numRows[row]); var columns = []; for(var j =0; j < numColumns; ++j) { columns[j] = cardIndex; } twoD[cardIndex] = columns;}return twoD; };var matrixTwoD = TwoDimensionalArray(arr, 4);console.log(matrixTwoD);console.log(matrixTwoD[0][0]);console.log(matrixTwoD[0][1]);console.log(matrixTwoD[0][2]);console.log(matrixTwoD[0][3]);我当前的代码创建一个数组,该数组将每个元素重复4次,直到列号为4的数字13:[[0,0,0,0], [1,1,1,1]....[13,13,13,13]]也许在我的for循环中做错了什么,或者没有正确解决问题。但是,任何指向我正确方向以获得上述愿望结果的东西。邦斯也有人会为我指出与此类问题有关的矩阵代数的其他资源,以及对自学有用的任何一般信息。谢谢一群! 最佳答案 保持简单,将输入数组切成numCols个长度的部分function TwoDimensionalArray(arr, numCols) { var arr2d = [], i; if (numCols) // safety first! for (i = 0; i < arr.length; i += numCols) arr2d.push(arr.slice(i, i + numCols)); return arr2d;}if (numCols)防止在未提供numCols或0的情况下发生无限循环for (i = 0; i < arr.length; i += numCols)从0中的numCols开始计数,例如i = 0, 4, 8, 16, ...直到达到大于arr.length的数字arr.slice(i, i + numCols)创建一个数组的子数组,从(包括)索引i开始,到(不包括)索引i + numCols结束,即我们得到一个numCols长的Array,从索引i的项目开始,该arr在arr2d.push的末尾附加一个新项目将所有这些放在一起,我们可以看到我们正在根据数组arr2d的各个部分构建一个新的数组arr2d 09-06 13:02