javascript - 在递归对象结构中搜索对象(代表文件系统)
问题描述
我想将要搜索的文件夹的名称作为输入传递,并将其所属的对象作为输出。
我的数组是这样的:
const array = {
item: [{
name: "parentFolder1",
item: [{
name: "subFolder1",
item: []
},
{
name: "subFolder2",
item: []
}
]
},
{
name: "parentFolder2",
item: [{
name: "sub1",
item: []
},
{
name: "sub2",
item: []
}
]
}
]
};
const sub = Object.values(array).map(x =>
x.find(y => y.item.find(obj => obj.name = "sub2")))
console.dir(sub)
我想要的输出:
{
name: "sub2",
item: []
}
我得到的输出:
[ { name: 'parentFolder1', item: [ [Object], [Object] ] } ]
解决方案
const array = {
item: [{
name: "parentFolder1",
item: [{
name: "subFolder1",
item: []
},
{
name: "subFolder2",
item: []
}
]
},
{
name: "parentFolder2",
item: [{
name: "sub1",
item: []
},
{
name: "sub2",
item: []
}
]
}
]
};
const val = array.item.map(folder => folder.item.find(obj => obj.name === "sub2")).find(val => val)
console.log(val)
推荐阅读
- arrays - 如何使用 PSGSUITE PS 模块添加谷歌群组?
- lisp - 有没有办法在 Common-Lisp 中不传递参数而不是传递“NIL”?
- javascript - 破坏传递给子函数的属性
- c# - 如果在网络表单中加密,如何检查 QueryString Null 值
- javascript - 有什么方法可以自动增加firebase中的字段
- javascript - 为什么我的底部子组件显示在页面顶部?
- javascript - 类中的 JavaScript 'onclick' 上下文
- javascript - 如何更改另一个跨度内按钮内的跨度颜色
- asp.net - 有条件地设置引导列宽?
- r - 如何在 0 到 100 之间缩放 R 中的 int 值