как отфильтровать данные из json фала (вложенные категории) javascript
помогите, пожалуйста, написать фильтр по свойствам с вложенными элементами) я получаю категорию "role", "language" или "level" по добавленным атрибутам data-filter, а как дальше их отфильтровать, не прописывая конкретные значения? если значения на кнопках прописаны динамически, из json-файла?
//кнопки написала на js:
const options = document.createElement("div");
options.classList.add("options");
card.appendChild(options);
const buttonRole = document.createElement("button");
buttonRole.classList.add("btn");
buttonRole.dataset.filter = 'role';
options.appendChild(buttonRole);
buttonRole.innerHTML = `${el.role}`;
const buttonLevel = document.createElement("button");
buttonLevel.classList.add("btn");
buttonLevel.dataset.filter = 'level';
options.appendChild(buttonLevel);
buttonLevel.innerHTML = `${el.level}`;
const langArr = el.languages;
langArr.forEach(elem => {
const buttonLangs = document.createElement("button");
buttonLangs.classList.add("btn");
buttonLangs.dataset.filter = 'languages';
options.appendChild(buttonLangs);
buttonLangs.innerHTML = elem;
})
///////////////
// вот так получаю категорию "role", "language" или "level" по добавленным атрибутам data-filter:
function filters(category, items) {
items.forEach((item) => {
const isItemFiltered = item.classList.contains(category);
if (isItemFiltered) {
// тут условие
}
})
}
это часть json-файла:
[
{
"id": 1,
"company": "Photosnap",
"logo": "./src/images/photosnap.svg",
"new": true,
"featured": true,
"position": "Senior Frontend Developer",
"role": "Frontend",
"level": "Senior",
"postedAt": "1d ago",
"contract": "Full Time",
"location": "USA Only",
"languages": ["HTML", "CSS", "JavaScript"],
"tools": []
},
{
"id": 2,
"company": "Manage",
"logo": "./src/images/manage.svg",
"new": true,
"featured": true,
"position": "Fullstack Developer",
"role": "Fullstack",
"level": "Midweight",
"postedAt": "1d ago",
"contract": "Part Time",
"location": "Remote",
"languages": ["Python"],
"tools": ["React"]
},
{
"id": 3,
"company": "Account",
"logo": "./src/images/account.svg",
"new": true,
"featured": false,
"position": "Junior Frontend Developer",
"role": "Frontend",
"level": "Junior",
"postedAt": "2d ago",
"contract": "Part Time",
"location": "USA Only",
"languages": ["JavaScript"],
"tools": ["React", "Sass"]
}, ... ]
Источник: Stack Overflow на русском