gpt4 book ai didi

javascript - 访问无限嵌套的子对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:27:29 29 4
gpt4 key购买 nike

想知道我们如何在 JS 中访问无限嵌套对象?

把这个例子当作我的面试官

您有一个带有父级和无限嵌套子级的对象

[ 
{
name: "Jack",
age: "98" ,
profession: "doctor
children: [
{
name: "Varun",
age: "80"
profession: "scientist"
children: [
{
name: "Ishan"
age: "62",
profession: "teacher
children: [{....
.....
.....[{
name: "Rahul",
age: "23",
profession: "engineer"
children: [{
.....

我需要找到对应于“工程师”职业的名称以及给定对象的嵌套深度。

注意:这里要考虑的 child 数量是无限的。

问题:谁能帮我弄清楚如何使用递归不使用递归

更新:他给了我使用分而治之的提示

更新:基于 Bary 的解决方案,我尝试了这样的事情

let infiniteArray = [ 
{
name: "Jack",
age: "98" ,
profession: "doctor",
children: [
{
name: "Varun",
age: "80",
profession: "scientist",
children: [
{
name: "Ishan",
age: "62",
profession: "teacher"
}
]
}
]
}
]


function isTheItem(item) {
if (item["profession"] === "teacher") return item
return false
}


function walk(collection) {
return collection.find(item => isTheItem(item) || walk(item.children));
}

但是当我对它进行 console.log 时,即 console.log(walk(infiniteArray)),它正在记录整个 infiniteArray,我明白为什么,但我去它只返回对应的名称职业。对我如何实现它有什么帮助吗?

  name: "Ishan",
age: "62",
profession: "teacher"
}

最佳答案

有两个方向遍历您的收藏* sibling *嵌套

因此您可以使用常规数组迭代器迭代此同级项,并递归遍历每个项的子项。

function isTheItem(item) {
return ...;
}

function walk(collection) {
return collection.find(item => isTheItem(item) || walk(item.children));
}

关于javascript - 访问无限嵌套的子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53863048/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com