【发布时间】:2019-01-07 16:22:42
【问题描述】:
有一个如下所示的对象:
const arrObj = [
{
name: 'FolderA',
path: '/',
child: [
{
name: 'FolderB',
path: '/FolderA',
child: [
{
name: 'FolderC0',
path: '/FolderA/FolderB',
child: [],
},
{
name: 'FolderC1',
path: '/FolderA/FolderB',
child: [],
},
],
},
],
},
{
name: 'FolderM',
path: '/',
child: [],
},
];
如果我将路径作为字符串:
var path = '/FolderA/FolderB',
我能否使用数组 reduce 访问 FolderB 内对象的子部分? 尝试失败:
var res = path.split('/').reduce(function(o, k) {
return o && o[k];
}, arrObj);
【问题讨论】:
-
没有名为
FolderA的属性。您需要找到具有该名称的对象。 -
老实说,我不喜欢那种 JSON 结构。为什么你需要
path属性?我的意思是,您到底想如何解析,您要寻找什么道具?编辑:可以有多种方法,例如检查路径是否匹配或通过name属性。 -
我也不喜欢它,但它是我必须使用的,所以将路径作为字符串我必须以某种方式访问它的一部分,所以我可以操纵它:(跨度>
-
@Nika 对我来说似乎是一个很好的结构,是的,您可能会争辩说
path可以变得多余,但在此处存储path的一个优点是文件夹项目可以发送到另一个函数,path也在那里,否则会丢失。
标签: javascript iteration