Ниже приведен массив объектов, и я пытаюсь отфильтровать только те объекты, которые имеют type:y
. Как видите, массив объектов может также содержать вложенный массив той же схемы и может быть вложенным на N-уровне. Поэтому, пожалуйста, помогите мне с наиболее оптимизированной функцией ES6 для достижения этой цели.
[
{
name: 'a',
type: 'x',
array:
[
{
name: 'l',
type: 'y',
},
{
name: 'm',
type: 'y',
},
{
name: 'n',
type: 'x',
array:
[
{
name: 'x',
type: 'y',
},
{
name: 'y',
type: 'y',
},
{
name: 'z',
type: 'x',
}
]
}
]
},
{
name: 'b',
type: 'y',
},
{
name: 'c',
type: 'y',
},
]
Также ниже приведен код, который я написал для достижения этой цели. ищет возможности улучшить производительность и оптимизировать ее
filterFunction(fields) {
const result = [];
(fields || []).forEach((field) => {
if (field.array) {
const x = field;
x.array = this.filterFunction(field.array);
result.push(x);
} else if (field.type !== 'x') {
result.push(field);
}
});
return result;
}