Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创造;m x n“;javascript中的二维数组_Javascript_Arrays_Matrix_Linear Algebra - Fatal编程技术网

创造;m x n“;javascript中的二维数组

创造;m x n“;javascript中的二维数组,javascript,arrays,matrix,linear-algebra,Javascript,Arrays,Matrix,Linear Algebra,如果要在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); var arr = [0,1,2,3,4,5,6,7,8,

如果要在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);
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]);
如您所见,下面是一个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]

function TwoDimensionalArray(numRows, numCols) {
//Magic happens here!
}

TwoDimensionalArray(arr, 4);
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]);
var arr=[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
函数二维数组(numRows,numColumns){
var-twoD=[];
对于(变量行=0;行
我的当前代码创建了一个数组,该数组将每个元素重复4次,直到列大小为4的数字13:
[[0,0,0,0],[1,1,1]…[13,13,13]

也许我在for循环中做错了什么,或者没有正确处理问题。但任何能为我指明正确方向的东西都能让我得到上述渴望的结果

Bouns

还有谁能给我指一下矩阵代数的额外资源,关于这类问题,以及任何有助于自学的东西


非常感谢

保持简单,将输入数组切成
numCols
length的部分

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;
}
函数二维数组(arr,numCols){
var arr2d=[],
我
if(numCols)//安全第一!
对于(i=0;i

  • if(numCols)
    在未提供numCols或
    0
  • for(i=0;i
    numCols
    中的
    0开始计数,例如
    i=0,4,8,16,
    直到我们达到一个大于
    arr.length
  • 创建一个数组的子数组,从(包括)索引
    i
    开始,到(不包括)索引
    i+numCols
    结束,即我们得到一个
    numCols
    长数组,从
    arr
    的索引
    i
    处的项开始
  • arr2d

将所有这些放在一起,我们可以看到,我们正在从数组的各个部分构建一个新的数组
arr2d
arr

计算所需的列,然后使用数组的切片方法

开始索引=(numColumns*i) end index=numColumns*(i+1)

var arr=[0,1,2,3,4,5,6,7,8,9,10,11,12,13]
函数二维数组(numRows,numColumns){
var列=[];
for(var i=0;i!==Math.ceil(numRows.length/numColumns);i++){
列[i]=numRows.slice((numColumns*i),numColumns*(i+1))
//console.log((numColumns*i)+“”+numColumns*(i+1))
}
返回列;
};
var matrixTwoD=二维阵列(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])一个很好的库:它提供矩阵操作。谢谢!但是你能详细说明一下这个过程吗?为什么会有这样的解决方案?只是为了学习。感谢:)@Amechi我在要点中添加了更多细节,而不是评论,因为我不确定你到底想知道哪些部分