【发布时间】:2015-02-12 10:04:19
【问题描述】:
我有一个如下所示的数据结构:
var someDataStructure = [
{
opts: {_id:1}
},
{
opts: {_id: 2},
children: [
{
opts: {_id: 3},
children: [
{
opts: {_id: 4}
}
]
}
]
},
{
opts: {_id: 5}
},
{
opts: {_id: 6},
children: [
{
opts: {_id: 7},
children: [
{
opts: {_id: 8}
}
]
}
]
}
];
这是一个对象数组,所有对象都有一个opts 属性和一个可选的children 属性。如果存在,children 属性将是同类型对象的数组。
给定任何opts._id,我需要找到所有父对象的_id。为了方便起见,我在这里给出的_id 只是按顺序排列的。 你不能假设它们是连续的整数
这个项目同时使用了 jquery 和 lodash,所以这两个库都可以使用。
所需输出示例:
- 给定
4,返回[2, 3]。 - 给定
3,返回[2]。 - 给定
8,返回[6, 7]。 - 给定
7,返回[6]。
递归并找到给定的_id 没有问题。但是,我感到很愚蠢,并且坚持维护父母的阵列。
【问题讨论】:
-
每个opts只能有一个孩子?
-
你确定那些期望输出的例子是正确的吗?
-
返回 8 [6,7];给出 2 返回 []
-
@Linus 抱歉,修复了所需的输出。这就是我做太多编辑而没有足够校对的结果。
-
@AlessandroMarchisio 孩子可以嵌套到任何深度。
标签: javascript algorithm recursion data-structures