JSFiddle - React, Tailwind, and code Playground
HTML
<h3>Before removing</h3>
<table width="100%" border="0" cellspacing="5" cellpadding="10">
<tr>
<td>Test 1</td>
<td>Value</td>
<td>Test 2</td>
<td>Value</td>
</tr>
<tr>
<td>Test 3</td>
<td>Value</td>
<td>Test 4</td>
<td>Value</td>
</tr>
<tr>
<td>Test 5</td>
<td></td>
<td>Test 6</td>
<td>Value</td>
</tr>
<tr>
<td>Test 7</td>
<td>Value</td>
<td>Test 8</td>
<td>Value</td>
</tr>
<tr>
<td>Test 9</td>
<td></td>
<td>Test 10</td>
<td>Value</td>
</tr>
</table>
<br>
<h3>After removing</h3>
<table id="tableID" width="100%" border="0" cellspacing="5" cellpadding="10">
<tr>
<td>Test 1</td>
<td>Value</td>
<td>Test 2</td>
<td>Value</td>
</tr>
<tr>
<td>Test 3</td>
<td>Value</td>
<td>Test 4</td>
<td>Value</td>
</tr>
<tr>
<td>Test 5</td>
<td></td>
<td>Test 6</td>
<td>Value</td>
</tr>
<tr>
<td>Test 7</td>
<td>Value</td>
<td>Test 8</td>
<td>Value</td>
</tr>
<tr>
<td>Test 9</td>
<td></td>
<td>Test 10</td>
<td>Value</td>
</tr>
</table>
CSS
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td,
th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
JavaScript
// remove blank td pair
$('#tableID tr td').each(function() {
if ($(this).text() == ''){
$(this).prev('td').remove();
$(this).remove();
}
});
// get array of all tds
var tds = $('#tableID tr td').length;
var td_arr = [];
for(var i=0; i<tds; i++){
if($('#tableID tr td').eq(i).text()!== ''){
td_arr.push($('#tableID tr td').eq(i).html());
}
}
// prepare table, wrap tr for every 4 tds, *according to your table sample
var e = '<tr>';
for(var i=1; i<=td_arr.length; i++){
if(i%4 == 0){
e = e + '<td>' + td_arr[i-1] + '</td></tr><tr>';
}
else{
e = e + '<td>' + td_arr[i-1] + '</td>';
}
}
// append
$('#tableID').html(e);