我有一个json对象,需要对其进行迭代,我可以将迭代用作函数,但希望查看是否有更简单的方法。 对象如下图所示:
obj = [
{
name: 'FolderA',
child: [
{
name: 'FolderB',
child: [
{
name: 'FolderC0',
child: [],
},
{
name: 'FolderC1',
child: [],
}
]
}
],
},
{
name: 'FolderM'
child: []
}
]
在某些情况下,我会获得关卡,例如
level = "0-0-1"
我拆分得到[0,0,1] 含义,第0个索引,嵌套的第0个索引以及进一步嵌套的第1个索引,我得到的像是:
obj[0][0][1],
但是由于嵌套结构的深度是未知的,因此我希望上述内容能够动态生成,就像这样:
obj + [0] + .children[0] + .children[1],
不确定是否可以这样做,但是如果有,请告诉我,否则我将不得不使用递归函数。谢谢
答案 0 :(得分:1)
您可以拆分字符串,然后在索引数组上使用reduce:
const arr = [
{
name: 'FolderA',
child: [
{
name: 'FolderB',
child: [
{
name: 'FolderC0',
child: [],
},
{
name: 'FolderC1',
child: [],
},
],
},
],
},
{
name: 'FolderM',
child: [],
},
];
const getObject = (arr, path) =>
path
.split('-')
.reduce((result, key) => result.child[key], {
child: arr,
});
console.log(getObject(arr, '0-0-1'));