有人可以看到此javascript代码中的错误吗?填充2D数组

时间:2018-07-07 19:27:13

标签: javascript arrays web

我的代码存在的问题是,它应该返回每行用az填充的26x26矩阵,尽管我尝试了许多初始化或填充矩阵的方法,但我总是遇到错误或用空字符串填充的矩阵(当前代码状态)。

有人可以帮我吗?换句话说,我需要函数fill2DMatrix()来返回矩阵,其中每一行都包含来自initArray的字母,到目前为止,它不会更改值并保持为空Array

<script>
    var rawInput = document.getElementById("input");
    var initArray = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];

    /* Returns filled alphabet 2D array */
    function init2DMatrix() {
        var twoDimArr = [];

        for (i = 0; i < 26; i++) {
            twoDimArr[i] = "";
            for(j = 0; j < 26; j++){
                twoDimArr[i][j] = "";
            }
        }
        return twoDimArr;
    }

    function fill2DMatrix() {
        var counter = 0;
        var blankSpacesArr = [];
        blankSpacesArr = init2DMatrix();

        for (var i = 0; i < 26; i++) {
            for(var j = 0; j < 26; j++){
                blankSpacesArr[i][j] = initArray[j];
            }
        }
        return blankSpacesArr;
    }

    function print() {
        var beaufortMatrix = fill2DMatrix();
        for (i = 0; i < initArray.length; i++) {

                document.getElementById("output").innerHTML += beaufortMatrix[i] + "<br>";

        }
    }

</script>

2 个答案:

答案 0 :(得分:1)

请尝试这样。

function init2DMatrix() 
{
  var arr = [];    
  for (var i=0; i<26; i++) {
    arr[i] = [];
  }    
  return arr;
 }

function fill2DMatrix() {    
    var blankSpacesArr = [];    
    blankSpacesArr = init2DMatrix();    
    for (var i = 0; i < 26; i++) {    
        for(var j = 0; j < 26; j++){    
            blankSpacesArr[i][j] = initArray[j];    
        }    
    }

    return blankSpacesArr;
}

答案 1 :(得分:0)

您已经有26个字母的数组。您需要做的就是将它循环26次到一个新数组中。

尝试一下-

var initArray = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
    var myarray=new Array(26)

    for (i=0; i <26; i++) {
        myarray[i]=new Array(initArray);
    }
    console.log(myarray);