写一个修改树形结构数据属性名函数
时间: 2024-02-22 17:55:00 浏览: 20
好的,我可以帮你写一个修改树形结构数据属性名的函数。具体实现如下:
```javascript
function renameKeys(treeData, keyMap) {
if (!treeData || typeof treeData !== "object") {
return treeData;
}
if (Array.isArray(treeData)) {
return treeData.map((item) => renameKeys(item, keyMap));
}
return Object.keys(treeData).reduce((result, key) => {
const newKey = keyMap[key] || key;
result[newKey] = renameKeys(treeData[key], keyMap);
return result;
}, {});
}
```
其中,`treeData` 是树形结构数据,`keyMap` 是一个键值对,用于指定需要修改的属性名,如 `{ oldKey: "newKey" }`。
这个函数会遍历整个树形结构数据,将符合 `keyMap` 中指定的属性名修改为对应的新属性名,并返回修改后的树形结构数据。
使用示例:
```javascript
const treeData = {
id: 1,
name: "root",
children: [
{
id: 2,
name: "child1",
children: [
{ id: 3, name: "grandchild1" },
{ id: 4, name: "grandchild2" },
],
},
{
id: 5,
name: "child2",
children: [{ id: 6, name: "grandchild3" }],
},
],
};
const keyMap = {
id: "nodeId",
name: "nodeName",
};
const renamedTreeData = renameKeys(treeData, keyMap);
console.log(renamedTreeData);
```
输出结果:
```
{
nodeId: 1,
nodeName: "root",
children: [
{
nodeId: 2,
nodeName: "child1",
children: [
{ nodeId: 3, nodeName: "grandchild1" },
{ nodeId: 4, nodeName: "grandchild2" },
],
},
{
nodeId: 5,
nodeName: "child2",
children: [{ nodeId: 6, nodeName: "grandchild3" }],
},
],
}
```