关于递归 about recursion

发布于 2022-09-05 21:01:32 字数 1192 浏览 15 评论 0

const treeData2 = [{
        name: '夏1',
        id: 'xia1',
        departments: [{
            name: '夏1-1',
            id: 'xia1-1'
        }]
    }, {
        name: '小夏2',
        id: 'xia2'
    }, {
        name: '夏3',
        id: 'xia3',
        departments: [{
            name: '夏3-1',
            id: 'xia3-1'
        }, {
            name: '夏3-2',
            id: 'xia夏3-2',
            departments: [{
                name: 'xia3-2-1',
                id: '3-2-1'
            }]
        }]
    }, {
        name: '小夏2',
        id: 'xia2'
    }
];

我需要把这段数据变成下面的数据,嵌套格式是一样的,只是上面把所有的name 改为title,所有的id 改为key,所有的departments 改为children,

上面的不确定嵌套几层, i need transform up to down,i dont know how many department,

const treeData2 = [{
  title: '夏1',
  key: 'xia1',
  children: [{
    title: '夏1-1',
    key: 'xia1-1'
  }]
}, {
  title: '小夏2',
  key: 'xia2'
}, {
  title: '夏3',
  key: 'xia3',
  children: [{
    title: '夏3-1',
    key: 'xia3-1'
  }, {
    title: '夏3-2',
    key: 'xia夏3-2',
    children: [{
      title: 'xia3-2-1',
      key: '3-2-1'
    }]
  }]
}, {
  title: '小夏2',
  key: 'xia2'
}
];

求大神帮忙 please!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

2022-09-12 21:01:33
const treeData2 = [{
        name: '夏1',
        id: 'xia1',
        departments: [{
            name: '夏1-1',
            id: 'xia1-1'
        }]
    }, {
        name: '小夏2',
        id: 'xia2'
    }, {
        name: '夏3',
        id: 'xia3',
        departments: [{
            name: '夏3-1',
            id: 'xia3-1'
        }, {
            name: '夏3-2',
            id: 'xia夏3-2',
            departments: [{
                name: 'xia3-2-1',
                id: '3-2-1'
            }]
        }]
    }, {
        name: '小夏2',
        id: 'xia2'
    }
];
let change = function(arr) {
    let result = [];
    for (let obj of arr) {
        let resultObj = {};
        resultObj.title = obj.name;
        resultObj.key = obj.id;
        if (obj. departments) resultObj.children = change(obj. departments);
        result.push(resultObj);
    }
    return result;
}
let result = change(treeData2);
歌枕肩 2022-09-12 21:01:33

供参考

function replaceKeys (data) {
  return data.map(({name, id, departments}) => {
    let el = {title: name, key: id}
    if (departments) { el.children = replaceKeys(departments) }
    return el
  })
}
眼眸里的快感 2022-09-12 21:01:33
let changeKey = trees => trees.map(d => ({title: d.name, key: d.id, children: d.departments ? changename(d.departments) : undefined}))

changeKey(treeData2)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文