我正在尝试从这种格式转换客户端的数据:[{ "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; }
添加回答
举报
0/150
提交
取消