【发布时间】:2019-03-25 16:49:12
【问题描述】:
我正在尝试使用 ES6 过滤器方法通过其 name 值搜索/过滤维数不同(因为它代表文件树)的多维数组,但同时也努力返回嵌套对象。
数组是什么样子的:
const fileHierarchy = [
{
name: 'folder1',
children: [
{ name: 'file1.txt' },
{ name: 'file2.txt' },
{
name: 'child folder1',
children: [
{
name: 'child folder2',
children: [
{ name: 'file3.txt' },
{ name: 'file4.txt' }
]
},
{ name: 'file5.txt' },
{ name: 'file6.txt' },
{
name: 'child folder3',
children: [
{ name: 'file7.txt' },
{ name: 'file8.txt' }
]
}
]
}
]
},
{name: 'folder2'}
]
这是我已经尝试过的(以及我的数组/对象的样子):
let currentFileHierarchy;
let searchString = 'file5';
currentFileHierarchy = fileHierarchy.filter(function (item) {
return item.name.toLowerCase().indexOf(searchString.toLowerCase()) >= 0
});
currentFileHierarchy 的结果只是一维的(只有folder1 和folder2 是可搜索的),但它还应该包括与搜索字符串匹配的所有嵌套对象。
如果有办法管理,是否也可以维护数组结构?还是我需要先把它弄平?
【问题讨论】: