How to loop through & display Javascript Multidimensional Array

13,413

To return a value in a multidimensional array: array[n][m] is the mth element of the nth row. To do this for every element, use embedded for-loops:

for (var i = 0; i < array.length; i++){
    for (var j = 0; j < array[i].length; j++){
        console.log(array[i][j]);
Share:
13,413
handmdmr
Author by

handmdmr

13 year ASE l1 Advanced master certified technician and now pursuing a degree in Computer Science. Will be getting into automotive diagnostic software design, automotive marketing and web development for the automotive industry.

Updated on June 04, 2022

Comments

  • handmdmr
    handmdmr almost 2 years

    I have a testing search software and it stores the data in a multidimensional array. I can return the whole database but cannot return just one value. I'm trying to figure out how to return one section as a multidimensional array. Otherwise it just repeats the passed value across the display. While De-bugging it i can see the complete array stored as an argument but am having trouble figuring out how to loop through that array to display correctly. You may need to view the source to understand better. If you enter lets say 439023483 and click search by ISBN button, you will see my issue. The show all button works fine. Anything pointing me in the right direction would be greatly appreciated and thank you in advance.

    Here is a link to the testing source: http://mdhmotors.com/jstesting/test.html

    Here is the part of the code that I'm stuck on:

    function searchByISBN(isbn)
    {
        var isbn = document.getElementById('isbn').value;
        showBooks(getBookByIsbn(isbn));
    
    }
    function getBookByIsbn(isbn)
    {
      var foundBook = null;
      for (b in BookStore)
      {
          var book = BookStore[b];
          if (book[ISBN] == isbn)
          {
              foundBook = new Array(book[ISBN], book[TITLE], book[AUTHOR], book[PUBLISHER], book[WS_PRICE], book[RET_PRICE], book[QUANTITY]);
              break;
          }
      }
      return foundBook; 
    }
    
    /*display search results*/
    function showBooks(searchResults)
    {
      //clearDisplayTable();
      if (searchResults == null)
      {
          return;
      }
      var row, cell, displayTable, tableHeader, tableTitle;
      displayTable = document.createElement('table');
      displayTable.className = "mytable";
      tableBody = document.createElement('tbody');
      row = document.createElement('tr');
      tableHeader = document.createElement('th');
      tableHeader.appendChild(document.createTextNode("Book Store Inventory"));
      tableHeader.setAttribute('colSpan', 8);
      tableHeader.setAttribute('style', 'font-size: 22px');
      row.appendChild(tableHeader);
      tableBody.appendChild(row);
    
     row = document.createElement('tr');
     columnName = document.createElement('th');
     columnName.appendChild(document.createTextNode("#"));
     row.appendChild(columnName);
    
     columnName = document.createElement('th');
     columnName.appendChild(document.createTextNode("Isbn"));
     row.appendChild(columnName);
    
     columnName = document.createElement('th');
     columnName.appendChild(document.createTextNode("Title"));
     row.appendChild(columnName);
    
     columnName = document.createElement('th');
     columnName.appendChild(document.createTextNode("Author"));
     ow.appendChild(columnName);
    
     columnName = document.createElement('th');
     columnName.appendChild(document.createTextNode("Publisher"));
     row.appendChild(columnName);
    
     columnName = document.createElement('th');
     columnName.appendChild(document.createTextNode("W/S"));
     row.appendChild(columnName);
    
     columnName = document.createElement('th');
     columnName.appendChild(document.createTextNode("Retail"));
     row.appendChild(columnName);
    
     columnName = document.createElement('th');
     columnName.appendChild(document.createTextNode("Qty"));
     row.appendChild(columnName);
     tableBody.appendChild(row);
    
      var count = 0;
      for (b in searchResults)
      {
        row = document.createElement('tr');
        book = searchResults[b];
        var data = new Array(++count, book[ISBN], book[TITLE], book[AUTHOR], book[PUBLISHER], book[WS_PRICE], book[RET_PRICE], book[QUANTITY]);
          for (var index = 0; index < 8; index++)
          {
              cell = document.createElement('td');
              cellText = document.createTextNode(data[index]);
    
              if (index == 0)
              cell.setAttribute('style', 'text-align: right');
              cell.appendChild(cellText);
              row.appendChild(cell);
          }
       tableBody.appendChild(row);
       }
    displayTable.appendChild(tableBody);
    bookResults.appendChild(displayTable);
    }
    
    • Royi Namir
      Royi Namir over 10 years
      You dont need that long code just to ask how to iterate mul. array...
    • Phrogz
      Phrogz over 10 years
      There's no such thing as a "multidimensional array" in JavaScript. There are only arrays whose values may also be arrays. I say this not to be nitpicky or pedantic, but because it may provide you some insight on what you need to do.
  • handmdmr
    handmdmr over 10 years
    I cannot seem to figure out where to loop the foundBook array for it to properly display. It returns the ISBN and i can see the complete array of all the book attributes in the watchstack. But it just loops through the ISBN number.