Я сделал решение только конечного числа заранее известных массивов из твоего примера. Можно улучшить, чтобы больше автоматизировать, но работает на твоих данных из вопроса:
const A = [{category: "Walls", id: "1"}, {category: "Walls", id: "2"}];
const B = [{category: "Window", id: "3"}, {category: "Walls", id: "4"}];
const C = [{category: "Walls", id: "5"}, {category: "Floor", id: "6"}];
const D = [{category: "Walls", id: "5"}, {category: "Walls", id: "6"}];
let newArr = [];
newArr['Walls'] = [];
newArr['Window'] = [];
newArr['Floor'] = [];
const allArr = {'A':A,'B':B,'C':C,'D':D};
for (let key in allArr) {
allArr[key].forEach(function (item) {
let tempItem = {'id': item.id, 'class': key};
newArr[item.category].push(tempItem);
});
}
for (let key in newArr) {
let section = $('<details></details>');
let summary = $('<summary>'+key+'</summary>');
section.appendTo('body');
section.append(summary);
newArr[key].forEach(function (item) {
console.log(item);
let newElement = $('<button class="'+item.class+'">'+item.id+'</button>');
section.append(newElement);
})
}