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