【发布时间】:2019-02-25 19:08:38
【问题描述】:
我有一个带有嵌套数组的对象和如下所示的对象:
// Recursive nested objects & arrays:
var obj = {
children: [{
parentname: "level 0, Benny",
children: [{
parentname: "level 0.0, Stevey",
children: [{
parentname: "level 0.0.0, Betty",
children: []
},
{
parentname: "level 0.0.1, AFGNCAAP",
children: [{
parentname: "level 0.0.1.0, Moonman",
children: []
}]
}
]
},
{
parentname: "level 0.1, Oreo",
children: []
}
]
},
{
parentname: "level 1, Jupiter",
children: []
}
]
};
// I am able to retrieve values with various length formulas:
console.log(obj.children[0].parentname); // level 0, Benny
console.log(obj.children[0].children[0].parentname); // level 0.0, Stevey
console.log(obj.children[0].children[0].children[0].parentname); // level 0.0.0, Betty
console.log(obj.children[0].children[0].children[1].parentname); // level 0.0.1, AFGNCAAP
console.log(obj.children[0].children[0].children[1].children[0].parentname); // level 0.0.1.0, Moonman
console.log(obj.children[0].children[1].parentname); // level 0.1, Oreo
console.log(obj.children[1].parentname); // level 1, Jupiter
// And I able to reduce formulas into functions...per level of nesting, example 1 level:
function getNameWorking1(name, level) {
console.log(obj[name][level].parentname);
}
getNameWorking1(["children"], [1]) // level 1, Jupiter
// And example 2 levels:
function getNameWorking2(name, level) {
console.log(obj[name][level[0]][name][level[1]].parentname);
}
getNameWorking2(["children"], [
[0],
[1]
]) // level 0.1, Oreo
// I am trying to create a single function that I can send a parameter with the sequence of property name & array values. This does not work:
function getNameNotWorking(parameter) {
console.log(obj[parameter].parentname);
}
getNameNotWorking("[children][1]");
getNameNotWorking("[children][0][children][1]");
我正在尝试创建一个函数,我可以发送一个带有属性名称和数组值序列的参数。最后一个功能不起作用。有关如何执行此操作的任何帮助?
顺便说一句。我有一个适用于此的递归函数。但它每次都从头开始工作,并查看每个嵌套对象和数组,直到找到我要查找的项目。这似乎重复做可能过分了。所以我正在寻找一种方法来查找对象,一旦我已经知道它的位置 - 通过所有子数组值。
【问题讨论】:
-
“这似乎重复做可能有点过分......” - 不要过早优化
-
你能发布你拥有的工作代码吗?我不明白您所说的“一旦我已经知道它的位置”是什么意思。
-
@adam 我的赞成票?
-
@Gaurav Saraswat,我早些时候试图投票,但它告诉我我不能......我想是因为我的排名太低了。对不起,我是新人,我刚刚创建了一个帐户。但它让我现在投票!非常感谢!
-
哦。不用担心 。一切顺利:)
标签: javascript object recursion nested