最近在做一个动态路由的项目,需要有三层嵌套循环去改变后台传过来的数据字段以及其他操作,比如给component值加".index"等.
遍历第三层时,报错 Cannot read property 'length' of null
然后苦思冥想,发现是因为第三层的只有下标为3的字段是不为空的,其他下标的字段都为空.所以没有遍历到就报错没有读取到length
后台返回的数据如下,permission被我定义成了router
{
"code": 0,
"message": "success",
"content": {
"realName": "admin",
"userId": "6347e29a21a242d68331c8663ab6b236",
"permissions": [
{
"id": "1",
"url": null,
"remark": null,
"parentId": "0",
"isMenu": 1,
"name": "用户及权限设置",
"status": 1,
"icon": "cc-visa",
"sort": 1,
"sysPermissions": [
{
"id": "4",
"url": "/abc/edf",
"remark": null,
"parentId": "1",
"isMenu": 2,
"name": "用户管理",
"status": 1,
"icon": null,
"sort": 1,
"sysPermissions": null
},
{
"id": "5",
"url": "/abc/bcd",
"remark": null,
"parentId": "1",
"isMenu": 2,
"name": "权限管理",
"status": 1,
"icon": null,
"sort": 2,
"sysPermissions": null
}
]
},
{
"id": "2",
"url": null,
"remark": null,
"parentId": "0",
"isMenu": 1,
"name": "流程*积分*阀值设置",
"status": 1,
"icon": "credit-card",
"sort": 2,
"sysPermissions": [
{
"id": "6",
"url": "/abc/def",
"remark": null,
"parentId": "2",
"isMenu": 2,
"name": "流程设置",
"status": 1,
"icon": null,
"sort": 1,
"sysPermissions": null
},
{
"id": "7",
"url": "/abc/asda",
"remark": null,
"parentId": "2",
"isMenu": 2,
"name": "积分设置",
"status": 1,
"icon": null,
"sort": 2,
"sysPermissions": null
},
{
"id": "8",
"url": "dwa/asda",
"remark": null,
"parentId": "2",
"isMenu": 2,
"name": "阀值设置",
"status": 1,
"icon": null,
"sort": 3,
"sysPermissions": null
}
]
},
{
"id": "3",
"url": null,
"remark": null,
"parentId": "0",
"isMenu": 1,
"name": "重点账户分组管理",
"status": 1,
"icon": "exclamation-triangle",
"sort": 3,
"sysPermissions": [
{
"id": "12",
"url": "dwa/asda",
"remark": null,
"parentId": "3",
"isMenu": 2,
"name": "重点账户分组管理",
"status": 1,
"icon": null,
"sort": 1,
"sysPermissions": null
}
]
},
{
"id": "9",
"url": null,
"remark": null,
"parentId": "0",
"isMenu": 1,
"name": "账户实名监控",
"status": 1,
"icon": "credit-card",
"sort": 4,
"sysPermissions": [
{
"id": "13",
"url": "dwa/asda",
"remark": null,
"parentId": "9",
"isMenu": 2,
"name": "账户异常监控",
"status": 1,
"icon": null,
"sort": 1,
"sysPermissions": [
{
"id": "19",
"url": "dwqdw/dwa",
"remark": null,
"parentId": "13",
"isMenu": 3,
"name": "频繁修改密码",
"status": 1,
"icon": null,
"sort": 1,
"sysPermissions": null
},
{
"id": "20",
"url": "ads/caw",
"remark": null,
"parentId": "13",
"isMenu": 3,
"name": "密码修改前后资金划转异常",
"status": 1,
"icon": null,
"sort": 2,
"sysPermissions": null
}
]
},
{
"id": "14",
"url": "dwa/asda",
"remark": null,
"parentId": "9",
"isMenu": 2,
"name": "资金交易异常监控",
"status": 1,
"icon": null,
"sort": 2,
"sysPermissions": [
{
"id": "21",
"url": "dwdwq/dwa",
"remark": null,
"parentId": "14",
"isMenu": 3,
"name": "单账户多股票交易",
"status": 1,
"icon": null,
"sort": 1,
"sysPermissions": null
},
{
"id": "22",
"url": "dad/wdaw",
"remark": null,
"parentId": "14",
"isMenu": 3,
"name": "单账户成交次数",
"status": 1,
"icon": null,
"sort": 2,
"sysPermissions": null
}
]
},
{
"id": "15",
"url": "dwa/asda",
"remark": null,
"parentId": "9",
"isMenu": 2,
"name": "中登违法账户监控",
"status": 1,
"icon": null,
"sort": 3,
"sysPermissions": [
{
"id": "23",
"url": "ae/adwa",
"remark": null,
"parentId": "15",
"isMenu": 3,
"name": "限制新开账户监控",
"status": 1,
"icon": null,
"sort": 1,
"sysPermissions": null
}
]
}
]
},
{
"id": "10",
"url": null,
"remark": null,
"parentId": "0",
"isMenu": 1,
"name": "异常账户核查反馈",
"status": 1,
"icon": "credit-card",
"sort": 5,
"sysPermissions": [
{
"id": "16",
"url": "dwa/asda",
"remark": null,
"parentId": "10",
"isMenu": 2,
"name": "监控触发情况",
"status": 1,
"icon": null,
"sort": 1,
"sysPermissions": null
},
{
"id": "17",
"url": "dwa/asda",
"remark": null,
"parentId": "10",
"isMenu": 2,
"name": "核查双向通道",
"status": 1,
"icon": null,
"sort": 2,
"sysPermissions": null
}
]
},
{
"id": "11",
"url": null,
"remark": null,
"parentId": "0",
"isMenu": 1,
"name": "查询统计",
"status": 1,
"icon": "credit-card",
"sort": 6,
"sysPermissions": [
{
"id": "18",
"url": "dwa/asda",
"remark": null,
"parentId": "11",
"isMenu": 2,
"name": "统计明细",
"status": 1,
"icon": null,
"sort": 1,
"sysPermissions": null
}
]
}
]
}
}
数据处理如下
然后就报错 errTypeError: Cannot read property 'length' of null
后来我意识到肯定是因为有些字段是空的,不为数组
看了看后台的数据格式.发现只有下标为3的那个sysPermission是数组,并且有子数据
我就无脑地吧j改成了3,然而报错 errTypeError: Cannot read property 'sysPermissions' of undefined
那是必须的啊,因为这样写代表着sysPermissions下的第4个子sysPermissions,但每个母sysPermissions下面只有一个子sysPermissions,所以找不到是正常的
后来把i改为3以后,解决该问题
成功!