Javascript 遍历递归json树并合并
我试图遍历递归json树,如下所示(json2),如果标识符匹配,则与另一个json(json)合并,如下所示。请注意,只要有可用的对象,它可能有对象或对象,但标识符在同一对象层次结构中的任何方式 注意:标识符值始终是唯一的 我已经浏览了underline.js库,但找不到任何符合此要求的函数。在正常的列表情况下,findWhere就足以解决问题,但事实并非如此,因为它有多个层次结构 JSON 2:Javascript 遍历递归json树并合并,javascript,jquery,json,recursion,Javascript,Jquery,Json,Recursion,我试图遍历递归json树,如下所示(json2),如果标识符匹配,则与另一个json(json)合并,如下所示。请注意,只要有可用的对象,它可能有对象或对象,但标识符在同一对象层次结构中的任何方式 注意:标识符值始终是唯一的 我已经浏览了underline.js库,但找不到任何符合此要求的函数。在正常的列表情况下,findWhere就足以解决问题,但事实并非如此,因为它有多个层次结构 JSON 2: { "identifier1": "123456", "identifier2"
{
"identifier1": "123456",
"identifier2": "234567"
}
JSON 1:
{
subtopic: [
{
"title": "title 1",
"subtitle": "title 2",
"objects": [{
"title": "123"
"label": "456"
"objects": [
{
"identifier": "identifier1",
"object": {
"object-1": "123",
"object-2": "456"
}
},
{
"identifier": "identifier2",
"object": {
"object-1": "123",
"object-2": "456"
}
}
]
}]
},
{
...
...
Similar as above
},
]
}
合并后
{
subtopic: [
{
"title": "title 1",
"subtitle": "title 2",
"objects": [{
"title": "123"
"label": "456"
"objects": [
{
"result": "123456",
"identifier": "identifier1",
"object": {
"object-1": "123",
"object-2": "456"
}
},
{
"result": "234567"
"identifier": "identifier2",
"object": {
"object-1": "123",
"object-2": "456"
}
}
]
}]
},
{
...
...
Similar as above
},
]
}
至少您需要一些迭代和递归样式来获得设置新属性的正确内部对象
函数合并(数组、对象){
Object.keys(对象).forEach(函数(k){
功能iter(a){
如果(a.标识符===k){
r=a;
返回true;
}
返回Array.isArray(a.objects)和&a.objects.some(iter);
}
var-r;
一些(国际热核实验堆);
if(r){
r、 结果=对象[k];
}
});
}
var object2={“identifier1”:“123456”,“identifier2”:“234567”},
object1={副标题:[{“title”:“title 1”,“subtitle”:“title 2”,“objects”:[{“title”:“123”,“label”:“456”,“objects”:[{“identifier”:“identifier1”,“object”:“identifier”:“identifier”:“123”,“object-2”:“456”}}},{“identifier”:“identifier”:“identifier 2”,“object;
合并(object1.subtopic,object2);
document.write(''+JSON.stringify(object1,0,4)+'')代码>