Вы переопределяете сохраненные значения элементов каждый раз, когда вызываете setItem. Если вы хотите отобразить таблицу, я предлагаю сохранить массив объектов. Если вы хотите использовать локальное хранилище, сделайте массив Stringify перед сохранением и проанализируйте его, когда вам нужно его прочитать
var storeData = function(data) {
localStorage.setItem("tableData",JSON.stringify(data);
}
storeData([]);
var getData = function() {
return JSON.parse(localStorage.getItem("tableData"));
}
И вызовите что-то вроде этого для сохранения данных:
storeData(getData().push({id: id, name: name, occupation: occupation});
И затем для отображения данных вы можете:
var arr = getData();
arr.forEach(element) {
displayOutput.innerHtml += `
<tr>
<td>ID: ${element.id}</td>
<td>Name: ${element.name}</td>
<td>Occupation: ${element.occupation}</td>
</tr>`;
}
Что касается сортировки, вы можете вызвать функцию сортировки в массиве по щелчку заголовка столбца таблицы.