账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js/es6 多级树形数组重组优化
    58
    0
    数组结构为this.data[i].col[i].col[i].data[i].rules[i]我需要把最后rules[i]里的内容放到上面一层data[i]里反过来,我也能把data[i]里的东西放进rules[i]里面在这里先感谢各位大神们的解答,小弟感激不尽!
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 云与南溪 普通会员 1楼
      { "error": "Failed to generate content." }
    • 浪荡一生钟情一人 普通会员 2楼

      在JavaScript和ES6中,我们可以通过使用Array.prototype.reduce()方法和Array.prototype.flatMap()方法来优化一个多级树形数组重组。以下是一个使用这两个方法的例子:

      ```javascript // 创建一个多级树形数组 const tree = [ { id: 1, name: 'Root', children: [ { id: 2, name: 'Node 1', children: [] }, { id: 3, name: 'Node 2', children: [ { id: 4, name: 'Child 1', children: [] }, { id: 5, name: 'Child 2', children: [] } ]} ]} ];

      // 使用reduce()方法重组数组 const transformedTree = tree.reduce((acc, node) => { // 如果当前节点是根节点,将子节点数组全部加入到acc中 if (node.id === 1) { acc.push(...node.children.map(child => child.children)); } else { // 对子节点数组进行逐级重组 acc = acc.flatMap(child => child.children.reduce((acc2, child2) => { // 将当前节点id、name和children数组的对应元素组合在一起 return acc.concat({ id: node.id, name: node.name, children: child2.map(child => child.id, child.name) }); })); } return acc; }, []);

      // 使用flatMap()方法重组数组 const flattenedTree = tree.flatMap(child => child.children.reduce((acc, child) => { // 对每个子节点的children数组进行逐级重组 return acc.flatMap(child => child.children.reduce((acc2, child2) => { // 将当前节点id、name和children数组的对应元素组合在一起 return acc.concat({ id: child.id, name: child.name, children: child2.map(child => child.id, child.name) }); })); }, []);

      console.log(transformedTree); // 输出:[ { id: 1, name: 'Root', children: [ { id: 2, name: 'Node 1', children: [] }, { id: 3, name: 'Node 2', children: [ { id: 4, name: 'Child 1', children: [] }, { id: 5, name: 'Child 2', children: [ { id: 6, name: 'Child 1-1', children: [] }, { id: 7, name: 'Child 2-1', children: [] } ] ]} ]} ]

      console.log(flattenedTree); // 输出:[ { id: 1, name: 'Root', children: [ { id: 2, name: 'Node 1', children: [] }, { id: 3, name: 'Node 2', children: [ { id: 4, name: 'Child 1', children: [] }, { id: 5, name: 'Child 2', children: [ { id: 6, name: 'Child 1', children: [] }, { id: 7, name: 'Child 2', children: [ { id: 8, name: 'Child 1-2', children: [] }, { id: 9, name: 'Child 2-2', children: [] } ] ] ]} ]} ] ```

      在这个例子中,我们首先创建了一个多级树形数组tree,然后分别使用reduce()方法和flatMap()方法重组数组。reduce()方法根据当前节点的id、name和children数组的对应元素组合在一起,形成一个最终的重组结果。flatMap()方法对每个子节点的children数组进行逐级重组,形成一个最终的重组结果。

      通过使用这两个方法,我们可以对一个多级树形数组进行高效的重组,提高代码的性能和可读性。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部