为了账号安全,请及时绑定邮箱和手机立即绑定

在javascript中将树从graphql格式转换为json格式

在javascript中将树从graphql格式转换为json格式

jeck猫 2022-01-07 09:54:12
我正在尝试从这种格式转换客户端的数据:[{    "id": 1,    "name": "dad",    "parent": [],    "children": [{            "group": {                "id": 2,                "name": "child1",                "parent": [{                    "parent": 1                }]            }        },        {            "group": {                "id": 3,                "name": "child2",                "parent": [{                    "parent": 1                }]            }        },        {            "group": {                "id": 8,                "name": "child3",                "parent": [{                    "parent": 1                }]            }        }    ]}]到这种格式:[{    id: 1,    name: "parent",    parent: null,    children: [{            id: 2,            name: "child1",            parent: {                id: 1            },            children: []        },        {            id: 3,            name: "child2",            parent: {                id: 1            },            children: []        }    ]}]关键点:所有键都不应该是字符串类型“父母”应该只包括父母的ID'group' 对象应该被删除 - 它的内容应该只是替换他我在 npm 中找不到要使用的转换库,并且我需要将数据采用精确的格式才能在“react-vertical-tree”组件中使用(在 react 中没有找到任何其他好看的垂直树组件)。
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

您可以使用转换后的部分映射新对象。


const convert = o => {

    var children;

    if ('group' in o) o = o.group;

    if ('children' in o) children = o.children.map(convert);

    return Object.assign({}, o, { parent: o.parent.length ? { id: o.parent[0].parent } : null }, children && { children });

};


var data = [{ id: 1, name: "dad", parent: [], children: [{ group: { id: 2, name: "child1", parent: [{ parent: 1 }] } }, { group: { id: 3, name: "child2", parent: [{ parent: 1 }] } }, { group: { id: 8, name: "child3", parent: [{ parent: 1 }] } }] }],

    result = data.map(convert);


console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反对 回复 2022-01-07
  • 1 回答
  • 0 关注
  • 223 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信