Javascript 具有深嵌套的对象映射

Javascript 具有深嵌套的对象映射,javascript,arrays,object,Javascript,Arrays,Object,我有一个目标: const object = { children: [{ uuid: '1', children: [{ uuid: '2', children: [{ uuid: '3', children: [] }, { uuid: '4', children: [{ uui

我有一个目标:

const object = {
  children: [{
    uuid: '1',
    children: [{
        uuid: '2',
        children: [{
            uuid: '3',
            children: []
          },
          {
            uuid: '4',
            children: [{
              uuid: '5',
              children: []
            }]
          }
        ]
      },
      {
        uuid: '6',
        children: []
      }
    ]
  }]
}
我需要一个映射每个孩子的函数:

Javascript

deepMapChildren(object, (child) => ({...child, uuid: 'new uuid'}))

是否有人为此编写了脚本或知道一种内置方法?

此解决方案在每个子项上递归调用
deepMapChildren
,以更新子项及其子项。该函数使用rest的destructuring将
子项
与当前子项分开。然后,它将回调
cb
的结果传播到子级,并使用
deepMapChildren
映射子级

const deepMapChildren=(obj,cb,childrenKey='children')=>{
const{[childrenKey]:children=[],…child}=cb(obj);//更新子项,并将子项的内容与其子项分开
返回{
小孩
[childrenKey]:children.map(c=>deepMapChildren(c,cb))//映射子对象(如果有)
};
}
const object={“children”:[{“uuid”:“1”,“children”:[{“uuid”:“2”,“children”:[{“uuid”:“3”,“children”:[]},{“uuid”:“4”,“children”:[{“uuid”:“5”,“children”:[]}]},{“uuid”:“6”,“children”:[]}]}
const result=deepMapChildren(对象,(子对象)=>
({…子,uuid:'新uuid'})
)

console.log(result)
感谢您提供了优雅的解决方案,但它并不适用于所有情况。欢迎使用。在不了解案例的情况下,很难为所有案例设计一些东西。它失败了吗?deepMapChildren(state,(node)=>{if(node.uuid==parentId){return{…node,children:[…node.children,newElement],};}return node;});node.children是未定义的hanks,但当我在回调中推送新的子节点时,它仍然不起作用:deepMapChildren(state,(node)=>{if(node.uuid===parentId){return{…node,children:[…node.children,newElement],};}return node;}在尝试操作它之前需要检查节点是否有子节点-
if(node.uuid==parentId&&node.children)