js 数组的处理

发布于 2022-09-13 00:36:23 字数 1413 浏览 9 评论 0

    arr1 = [
      {
        label: '系统管理',
        id: 2011,
        children: [
          {
            label: '通讯录',
            id: 2012
          },
          {
            label: '个人资料',
            id: 2014
          }
        ]
      },
      {
        label: '客户及商机管理',
        id: 2024,
        children: [
          {
            label: '线索库',
            id: 2025,
            children: [
              {
                label: "新建线索",
                id: 2031
              }
            ]
          },
          {
            label: "商机库",
            id: 2026,
            children: [
              {
                label: "新建线索",
                id: 2031
              }
            ]
          },
          {
            label: "客户",
            id: 2040
          }
        ]
      }
    ]

需要得到:

    arr2 = [
      {
        label: '客户及商机管理',
        id: 2024,
        children: [
          {
            label: '线索库',
            id: 2025,
            children: [
              {
                label: "新建线索",
                id: 2031
              }
            ]
          },
          {
            label: "商机库",
            id: 2026,
            children: [
              {
                label: "新建线索",
                id: 2031
              }
            ]
          }
        ]
      }
    ]

需要处理arr1 的第三级children有值就返回,没有就过滤掉

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

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

发布评论

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

评论(2

如果没有 2022-09-20 00:36:23
function filterData(data, level = 0){
    function filterTreeData(data, level, zindex = 1){
        return data.filter(item => {
            if(zindex >= level){
                return true
            }else if(Array.isArray(item.children)){
                let c = filterTreeData(item.children, level, zindex + 1)
                if(c.length){
                    item.children = c
                }
                return c.length
            }
        })
    }
    data = JSON.parse( JSON.stringify(data) )
    return filterTreeData(data, level, 1)
}

filterData(arr1, 3)
若言繁花未落 2022-09-20 00:36:23

这种方法应该可以

function hasNext(item, level) {
  if(level<=0) {
    return true
  }
  let result = true;
  
  while(--level) {
   result = result && Array.isArray(item.children);
   item 
   if(Array.isArray(item.children) && item.children.length) {
     item = item.children[0]
   }
  }

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