用于获得没有兄弟姐妹的完整路径的递归函数

时间:2015-02-23 10:22:06

标签: algorithm data-structures

我有一个输入:

var query = {"a":{"b":{"branchs":[{"$or":{"d":10}},{"$or":{"e":10}}],"f":22}}};

我需要一个输出:

output[0] = {"a":{"b":{"$or":{"d":10},"f":22}}}  
output[1] = {"a":{"b":{"$or":{"e":10},"f":22}}}

我需要“分支”键中的“拆分和复制”数组。该对象是多维的,它可以嵌套N个分支键,所以我认为它应该是一个递归函数。

我做了几次测试,但我不能。我将不胜感激任何帮助

修改 函数http://jsfiddle.net/cjsb7j1r/(需要重构)

1 个答案:

答案 0 :(得分:0)

也许,这样的事情?

var query = {"a":{"b":{"branchs":[{"$or":{"d":10}},{"$or":{"e":10}}],"f":22}}};

//output[0] = {"a":{"b":{"$or":{"d":10},"f":22}}}  
//output[1] = {"a":{"b":{"$or":{"e":10},"f":22}}}

var output = [];
for (var i = 0; i < query.a.b.branchs.length; i++){
    output.push({
       "a":{
           "b": {"$or": query.a.b.branchs[i]["$or"], "f": query.a.b.f}
       }
    });
}
console.log(output);

的jsfiddle:

http://jsfiddle.net/8zsrwbLq/1/

编辑:由于"f"始终位于"b"

,因此进行了小幅修正