Timezone Table to JSON

by laucheukhim

HTML

<table id="a" width="100%" cellspacing="0" cellpadding="0" class="times">
          <tbody><tr>
            <td width="10%" valign="top" align="left" class="chart1">Code</td>
            <td width="80%" valign="top" align="left" class="chart1">Definition</td>
            <td width="10%" valign="top" align="left" class="chart2">GMT</td>
          </tr>
          <tr>
            <td valign="top" align="left" class="chart1"><a name="ACDT" id="ACDT"></a>ACDT</td>
            <td valign="top" align="left" class="chart1">Australian Central Daylight Time</td>
            <td valign="top" align="left" class="chart2">+10:30</td>
          </tr>
          <tr>
            <td valign="top" align="left" class="chart1"><a name="ACIT" id="ACIT"></a>ACIT</td>
            <td valign="top" align="left" class="chart1">Ashmore and Cartier Islands Time</td>
            <td valign="top" align="left" class="chart2">+8:00</td>
          </tr>
          <tr>
            <td valign="top" align="left" class="chart1"><a name="ACST" id="ACST"></a>ACST</td>
            <td valign="top" align="left" class="chart1">Australian Central Standard Time</td>
            <td valign="top" align="left" class="chart2">+9:30</td>
          </tr>
          <tr>
            <td valign="top" align="left" class="chart1"><a name="ACT" id="ACT"></a>ACT</td>
            <td valign="top" align="left" class="chart1">Acre Time</td>
            <td valign="top" align="left" class="chart2">-5</td>
          </tr>
          <tr>
            <td valign="top" align="left" class="chart1"><a name="ACWST" id="ACWST"></a>ACWST</td>
            <td valign="top" align="left" class="chart1">Australian Central Western Standard Time</td>
            <td valign="top" align="left" class="chart2">+8:45</td>
          </tr>
          <tr>
            <td valign="top" align="left" class="chart1"><a name="ADT" id="ADT"></a>ADT</td>
            <td valign="top" align="left" class="chart1">Arabia Daylight Time</td>
            <td...

JavaScript

function tableToJson(table) {
    var data = [];

    // first row needs to be headers
    var headers = [];
    for (var i=0; i<table.rows[0].cells.length; i++) {
        headers[i] = table.rows[0].cells[i].innerHTML.toLowerCase().replace(/ /gi,'');
    }

    // go through cells
    for (var i=1; i<table.rows.length; i++) {

        var tableRow = table.rows[i];
        var rowData = {};

        for (var j=0; j<tableRow.cells.length; j++) {

            rowData[ headers[j] ] = tableRow.cells[j].innerHTML.replace(/(<([^>]+)>)/ig,"");

        }

        data.push(rowData);
    }       

    return data;
}
console.log(JSON.stringify(tableToJson(document.getElementById("a"))));