用于获取没有同级的完整路径的递归函数



我有一个输入,比如:

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个branchs键,所以我认为它应该是一个递归函数。

我做了几次测试,但我做不到。我将感谢的任何帮助

编辑:中的函数http://jsfiddle.net/cjsb7j1r/(需要重构)

也许是这样的?

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"级上,因此刚刚进行了小的更正

最新更新