У меня есть массив с объектами, которые я хочу отфильтровать в соответствии с неопределенным числом условий, переданных в качестве параметров.
Вот как я фильтрую массив a с помощью массива условий в hide ()
const statuses = [
{
id: 0,
name: 'archived'
},
{
id: 1,
name: 'coming',
hide: (...filterParam) => filterParam.every(rule => rule)
}
];
const filteredStatuses = statuses.filter(element => {
switch (element.id) {
case 1:
return !element.hide(this.isTopTabs());
// other cases with others logic
default:
return true;
}
});
Теперь, если каждый объект может иметь свой собственный массив дочерних объектов, вот так:
const statuses = [
{
id: 'statuses',
name: 'treeName',
children: [
{
id: 1,
name: 'inProgress',
hide: (...filterParam) => filterParam.every(Boolean)
},
{
id: 2,
name: 'coming',
checked: false,
hide: (...filterParam) => filterParam.every(Boolean)
}
]
}
];
Как я могу рекурсивно повторять один и тот же путь?
Есть ли у вас лучший способ динамически фильтровать этот массив, избегая переключения / регистра?
И, наконец, как набрать остальные параметры с помощью общего вида: <T>(...filterParam: Array<T>) => filterParam.every(Boolean)
?