Etaos
Etaos

Reputation: 937

Can anyone see mistake in this javascript code? Filling 2D array

The issue with my code is that it should return 26x26 matrix filled with a-z on every row, although I tried many ways to initialize or fill the matrix, I always got error or matrix filled with empty strings(current code state).

Can somebody help me? In other words I need function fill2DMatrix() to return matrix where every row contains letters from initArray, so far it doesn't change values and stays as empty 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>

Upvotes: 2

Views: 82

Answers (2)

Abhishek Sinha
Abhishek Sinha

Reputation: 5123

You already have a array of 26 alphabets. All you need to do is loop it 26 times into a new array.

Try this -

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);

Upvotes: 0

Shildra
Shildra

Reputation: 147

Please Try like this.

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;
}

Upvotes: 1

Related Questions