从json数据对象中的第一级子项中获取所有父项ID

时间:2018-06-07 22:29:28

标签: javascript jquery

我有JSON数据对象,其中不同深度有子项:

var obj = {
    13: {
        name: 'Test',
        id: 13,
        parentId: null,
        children: {
            2: {
                name: 'Child',
                id: 2,
                parentId: 13,
                children: {
                    34: {
                        name: 'One More',
                        id: 34,
                        parentId: 2
                    },
                    35: {
                        name: 'One More Child',
                        id: 35,
                        parentId: 2
                    }
                }
            }
        }
    }
};

我想创建函数,它将在以下类型的另一个结构中解析此数据对象:

var sortedObj = {
  'One More Child': [35, 2, 13],
  'One More': [34, 2, 13],
  'Test': [13]
};

我想我应该递归地走树,但不知道如何开始。 创建函数来解决这种情况的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

function getNames(obj) {
    var ret = { }

    for(var id in obj) {
        ret[obj[id]["name"]] = [ id ];

        if("children" in obj[id]) {
            var children = getNames(obj[id]["children"]);

            for(var name in children) {
                children[name].push(id);
            }

            Object.assign(ret, children);
        }
    }

    return ret;
}