Я хотел бы создать фильтры для таблицы.Эта таблица генерируется из массива.Я создал флажки, и теперь я застрял.
Я много искал, но не могу найти решение.
Я хочу отфильтровать данные таблицы в соответствии с сгенерированными флажками, но я не знаю, как соединить все это вместе.Я не знаю точно, как собирать объекты из таблицы, которая будет соответствовать значению флажка, чтобы он отфильтровывал строки таблицы после отмены выбора данного типа.
Я пытался с событием .target.getAttribute ('data-filter') но там у меня проблема с фильтрацией массива для сопоставления с событием.
Есть ли возможность сделать что-то подобное просто в чистом javascript?
вот мой код:
let array= [
{
"name": "John",
"surname": "XYZ",
"department": "IT"
},
{
"name": "John",
"surname": "XYZ",
"department": "accountancy"
},
]
function generateTableHead(table, data) {
let thead = table.createTHead();
let row = thead.insertRow();
for (let key of data) {
let th = document.createElement("th");
let text = document.createTextNode(key);
th.appendChild(text);
row.appendChild(th);
}
}
function generateTable(table, data) {
for (let element of data) {
let row = table.insertRow();
for (key in element) {
let cell = row.insertCell();
let text = document.createTextNode(element[key]);
cell.appendChild(text);
}
}
}
let table = document.querySelector("table");
let data = Object.keys(array[0]);
generateTable(table, array);
generateTableHead(table, data);
// FILTER: checkboxes
const getDepartments = array.map(function (element) {
return [element.department].join('');
});
let departmentFilters = [...new Set(getDepartments)];
let createFilters = function () {
box = document.querySelector('#filterType');
box.innerHTML = departmentFilters.map(function (department) {
let checkboxes = '<label>' +
'<input type="checkbox" data-filter="' + department + '" checked>' + department +
'</label>';
return checkboxes;
}).join('');
};