У меня есть многомерный массив, как указано во фрагменте кода, я хочу отфильтровать этот массив по значению самого внутреннего массива, а затем вернуть это значение вместе с родительским.Например,
С
const nodes = [
{
value: 'Documents',
label: 'Documents',
children: [
{
value: 'Employee Evaluations.zip',
label: 'Employee Evaluations.zip',
},
{
value: 'Expense Report.pdf',
label: 'Expense Report.pdf',
},
{
value: 'notes.txt',
label: 'notes.txt',
},
],
},
{
value: 'Photos',
label: 'Photos',
children: [
{
value: 'nyan-cat.gif',
label: 'nyan-cat.gif',
},
{
value: 'SpaceX Falcon9 liftoff.jpg',
label: 'SpaceX Falcon9 liftoff.jpg',
},
],
},
];
Если я отфильтрую по «notes.txt», это должно дать
[
{
value: 'Documents',
label: 'Documents',
children: [
{
value: 'notes.txt',
label: 'notes.txt',
}
]
]
Это то, что я пытался, но он просто возвращает самое внутреннеефильтрованное содержимое
const nodes = [
{
value: 'Documents',
label: 'Documents',
children: [
{
value: 'Employee Evaluations.zip',
label: 'Employee Evaluations.zip',
},
{
value: 'Expense Report.pdf',
label: 'Expense Report.pdf',
},
{
value: 'notes.txt',
label: 'notes.txt',
},
],
},
{
value: 'Photos',
label: 'Photos',
children: [
{
value: 'nyan-cat.gif',
label: 'nyan-cat.gif',
},
{
value: 'SpaceX Falcon9 liftoff.jpg',
label: 'SpaceX Falcon9 liftoff.jpg',
},
],
},
];
let key="notes.txt";
//let filtered=nodes.filter(n=>n.value===key);
let cfiltered=nodes.map(n=>n.children.filter(n1=>n1.value===key));
//console.log(filtered);
console.log(cfiltered);