Javascript 使用路径访问对象的一部分
具有一个对象,如下所示:Javascript 使用路径访问对象的一部分,javascript,iteration,Javascript,Iteration,具有一个对象,如下所示: const arrObj = [ { name: 'FolderA', path: '/', child: [ { name: 'FolderB', path: '/FolderA', child: [ { name: 'FolderC0', path: '/FolderA/FolderB', child: [],
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',
我是否能够使用array reduce访问FolderB中对象的子部分?
尝试此操作失败:
var res = path.split('/').reduce(function(o, k) {
return o && o[k];
}, arrObj);
使用及
const path='/FolderA/FolderB'
常量数据=[{name:'FolderA',path:'/',child:[{name:'FolderB',path:'/FolderA',child:[{name:'FolderC0',path:'/FolderA/FolderB',child:[],},},},},{name:'FolderA/FolderB',path:'/FolderA/FolderB',child:[],},},{name:'FolderM',path:'/',child:[],},]
const res=path.slice(1).split(“/”).reduce((a,c)=>{
返回a.find(({name})=>name==c.child;
},数据);
控制台日志(res)代码>没有名为FolderA
的属性。您需要找到具有该名称的对象。老实说,我不喜欢那种JSON结构。为什么需要路径
属性?我是说,你到底想怎么解析,你想找什么道具?编辑:可以有多种方法,如检查路径是否匹配或通过name
properties。我也不喜欢它,但这是我必须处理的,因此以字符串形式使用路径时,我必须以某种方式访问它的部分,以便我可以操作它:(@Nika对我来说似乎是一个很好的结构,是的,你可以争辩说路径
可能是多余的,但是在这里存储路径
的一个优点是,文件夹项目可以发送到另一个函数,而路径也在那里,否则就会丢失。这在更深层次上是行不通的。你把它限制在仅适用于2级深度。请尝试将“/FolderA/FolderB/FolderC0”作为pth。@Nika,为什么它不能在2级以上工作?它为FolderC0返回一个空数组,因为没有子级。我的意思是,即使在那里添加数组,它也会有相同的问题。编辑:我想说的是,它应该是递归的,而不是一个reduce。编辑:对不起,我这里有案件问题,别理我。@kemicofa-非常感谢,伙计:)