js递归删除某个对象里没有包含的某个字段则删除,则删除该对象;

新手上路,请多包涵

1-这里是原数组对象
{

"code": 1,
"data": [
    {
        "department_name": "xxxx有限公司",
        "parent_id": 0,
        "child_list": [
            {
                "department_name": "销售部",
                "parent_id": 1,
                "child_list": [
                    {
                        "amount": 10000.0,
                        "employee_name": "yq"
                    },
                    {
                        "amount": 120.0,
                        "employee_name": "孙++"
                    }
                ]
            },
            {
                "department_name": "商务部",
                "parent_id": 1,
                "child_list": [
                    {
                        "amount": 2200.0,
                        "employee_name": "yq"
                    }
                ]
               
            },
            {
                "amount": 12200.0,
                "employee_name": "yq"
            },
            {
                "amount": 18.0,
                "employee_name": "李易峰"
            },
            
            {
                "amount": 120.0,
                "employee_name": "孙鹏"
            }
        ]
    }
],
"msg": "操作成功"

}
提问:要求递归后得到的数组对象,由于js递归学的很差,往各位大神帮帮忙。
{

"code": 1,
"data": [
    {
        "department_name": "xxxx有限公司",
        "parent_id": 0,
        "child_list": [
            {
                "department_name": "销售部",
                "parent_id": 1,
                "child_list": [
                    {
                        "amount": 10000.0,
                        "employee_name": "yq"
                    },
                    {
                        "amount": 120.0,
                        "employee_name": "孙++"
                    }
                ]
            },
            {
                "department_name": "商务部",
                "parent_id": 1,
                "child_list": [
                    {
                        "amount": 2200.0,
                        "employee_name": "yq"
                    }
                ]
            }
        ]
    }
],
"msg": "操作成功"

}

阅读 3.2k
1 个回答

看你的输入和输出,我猜不是没有包含某个字段就删除,这样的话,最后一层都是没有 child_list 这个字段的,都要被删除了。

我猜你想要的应该是同层中如果有 child_list 的对象存在,则将没有 child_list 的对象过滤掉。

代码如下:

function recursively (array, key) {
  const hasChildren = array.some(item => item[key])
  if (hasChildren) {
    return array.filter(function (item) {
      return item[key]
    }).map(function (item) {
      return {
        ...item,
        [key]: recursively(item[key], key)
      }
    })
  } else {
    return array
  }
  
}

这样调用 recursively(data, 'child_list') 即可。

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