Dynamically create a two dimensional Javascript Array

后端 未结 7 1774
臣服心动
臣服心动 2020-12-11 22:07

Can someone show me the javascript I need to use to dynamically create a two dimensional Javascript Array like below?

desired array contents:

相关标签:
7条回答
  • 2020-12-11 22:28

    This is pretty cut and dry, just set up a nested loop:

    var count = 1;
    var twoDimensionalArray =[];
    
    for (var i=0;i<2;i++)
    {
      var data = [];
      for (var j=0;j<5;j++)
      {
        data.push("Test" + count);
        count++;
      }
    
      twoDimensionalArray.push(data);
    
    }
    
    0 讨论(0)
  • 2020-12-11 22:29

    It sounds like you want to map the array of text for each $something element into an outer jagged array. If so then try the following

    var outterArray = [];
    $something.each(function () { 
      var innerArray = [];
      $(this).somethingElse.each(function () {
         innerArray.push($(this).text());
      });
      outterArray.push(innerArray);
    });
    
    alert(outterArray);
    
    0 讨论(0)
  • 2020-12-11 22:31

    A more flexible approach is to use raw objects, they are used in a similar way than dictionaries. Dynamically expendables and with more options to define the index (as string).

    Here you have an example:

    var myArray = {};
    myArray[12]="banana";
    myArray["superman"]=123;
    myArray[13]={}; //here another dimension is created
    myArray[13][55]="This is the second dimension";
    
    0 讨论(0)
  • 2020-12-11 22:32

    I had a similar issue recently while working on a Google Spreadsheet and came up with an answer similar to BrianV's:

      // 1st nest to handle number of columns I'm formatting, 2nd nest to build 2d array   
      for (var i = 1; i <= 2; i++) {
        tmpRange = sheet.getRange(Row + 1, Col + i, numCells2Format); // pass/fail cells
        var d2Arr = [];
        for (var j = 0; j < numCells2Format; j++) {
          // 1st column of cells I'm formatting
          if ( 1 == i) {
            d2Arr[j] = ["center"];
          // 2nd column of cells I'm formatting
          } else if ( 2 == i ) {
            d2Arr[j] = ["left"];
          }
        }
        tmpRange.setHorizontalAlignments( d2Arr );   
      }
    

    So, basically, I had to make the assignment d2Arr[index]=["some string"] in order to build the multidimensional array I was looking for. Since the number of cells I wanted to format can change from sheet to sheet, I wanted it generalized. The case I was working out required a 15-dimension array. Assigning a 1-D array to elements in a 1-D array ended up making the 15-D array I needed.

    0 讨论(0)
  • 2020-12-11 22:35

    you can use Array.apply

            Array.apply(0, Array(ARRAY_SIZE)).map((row, rowIndex) => {
                return Array.apply(0, Array(ARRAY_SIZE)).map((column, columnIndex) => {
                    return null;
                });
            });`
    
    0 讨论(0)
  • 2020-12-11 22:40

    You don't need to keep track of array lengths yourself; the runtime maintains the ".length" property for you. On top of that, there's the .push() method to add an element to the end of an array.

        // ...
        innerArray.push($(this).text());
      // ...
      outerArray.push(innerArray);
    

    To make a new array, just use []:

    innerArray = []; // new array for this row
    

    Also "outer" has only one "t" :-)

    0 讨论(0)
提交回复
热议问题