json递归

对testData进行处理后变成resultData格式
如果当前节点的child的第一个子节点的id有值,给当前节点增加一个cid的键并且值为id
cid的值为最里面的child的子节点id值
var testData=[{
    "id": "1",
    "child": [{
        "id": "1-1",
        "child": []
    }]
},{
    "id": "2",
    "child": [{
        "id": "2-1",
        "child": [{
            "id": "2-1-1",
            "child": []
        }]
    },{
        "id": "2-2",
        "child": [{
            "id": "2-2-2",
            "child": []
        }]
    }]
},{
    "id": "3",
    "child": []
}];

var resultData=[{
    "id": "1",
    "child": [{
        "id": "1-1",
        "child": []
    }],
    "cid": "1-1"
},{
    "id": "2",
    "child": [{
        "id": "2-1",
        "child": [{
            "id": "2-1-1",
            "child": []
        }],
        "cid": "2-1-1"
    },{
        "id": "2-2",
        "child": [{
            "id": "2-2-1",
            "child": []
        }],
        "cid": "2-2-1"
    }],
    "cid": "2-1-1"
},{
    "id": "3",
    "child": []
}];
 
function addCid(json) {
    json.forEach(function(item){
        if(item.child[0]&&item.child[0].id){
            item.cid=item.child[0].id;
            addCid(item.child);
            if(item.child[0].cid){
                item.cid=item.child[0].cid;
            }
        }
    })
}

addCid(testData);
console.log(testData);
 
posted @ 2017-08-25 18:39  wanghuohuo  阅读(325)  评论(0编辑  收藏  举报