JSFiddle - React, Tailwind, and code Playground

HTML

<table id="mytable">
    <tr>
        <td>header</td>
        <td>Company 1</td>
        <td>Company 2</td>
        <td>Company 3</td>
    </tr>
    <tr>
        <td>Question 1</td>
        <td>answer 1</td>
        <td>answer 2</td>
        <td>answer 3</td>
    </tr>
    <tr>
        <td>Question 2</td>
        <td>answer 1</td>
        <td>answer 2</td>
        <td>answer 3</td>
    </tr>
</table>
<button id="toJSON"> To JSON </button>

JavaScript

document.getElementById('toJSON').addEventListener('click', function(){
    var table = document.getElementById('mytable'),
        names = [].slice.call(table.rows[0].cells), 
        values = [].slice.call(table.rows, 1),
        out = {};
    

    values.forEach(function(row) {
        var cells = row.cells,
            caption = cells[0].innerHTML;
        
        [].forEach.call(cells, function(cell, idx) {
            var value = {}, 
                arr;
            if(!idx) return;
            
            value[caption] = cell.innerHTML;
            
            arr = out[names[idx].innerHTML] || (out[names[idx].innerHTML] = []);
            
            arr.push(value);
        });
    })
    
    console.log(out);
});