js 三重遍历问题

这是一个data
image
我们打开一个来看看,是这样的,里面有children
image
然后再把children打开
image
然后再打开里面的其中一个对象,里面还有一层children,不过是为空
image

这就是这个data的数据结构,现在我需要的是遍历这个data里的所有children,然后如果这些children里的appId=pid话,然后就把这个children的数据放在这个appId的children,并删除外面那条children,简单的来说就是剪切→粘贴

先感谢大神们的解答

阅读 1.7k
2 个回答
var list = [
  {
    id: '1',
    appName: 'name',
    children: [
      {
        id: '11',
        pid: '123',
        appId: '123',
        children: []
      },
      {
        id: '22',
        pid: '456',
        appId: '456',
        children: []
      },
      {
        id: '33',
        pid: '33434',
        appId: '456',
        children: []
      },
    ]
  }
]

function map(list) {
  return list.reduce((res, item) => {
    if(Array.isArray(item.children) && item.children.length) res.push({...item, children: map(item.children)})
    else if(item.pid === item.appId) res.push(item)
    return res;
  }, []);
}

map(list)

是这样?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题