为了账号安全,请及时绑定邮箱和手机立即绑定

有大佬遇到过这个问题吗:javascript 数组中循环添加字典列表求指导!

有大佬遇到过这个问题吗:javascript 数组中循环添加字典列表求指导!

慕侠2389804 2019-08-17 10:10:27
有三组以下格式的数组数据,想将这三组中的数据合并,出现问题报错如下:TypeError:Cannotreadproperty'children'ofundefinedcategories:[{'id':0,'cname':''}]courses:[{'id':0,'category_id':0'coursename':'',}]chapter:[{'id':0,'courseid':0,'chaptername':''}]options:function(){letobj=newArray()letthat=this;for(leti=0;i
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

出错原因
遍历courses的时候,如果if语句结果是false,categories中会缺少courses信息,遍历chapter的时候把数据push进categories下的courses里就会报错
改进方案
遍历chapter放在遍历courses的if语句内
obj[i].children[k].children.push改为obj[i].children[coursesLength-1].children.push
过程分析
遍历categories
执行第一次后的结构:[{label:'',value:'',children:[]}]
遍历courses
执行第一次后的结构
iftrue的结构:[{label:'',value:'',children:[{label:'',value:'',children:[]}]}]
iffalse:[{label:'',value:'',children:[]}]
遍历chapter
执行第一次的后的结构
如果上一层的结构是[{label:'',value:'',children:[]}],执行obj[i].children[k].children.push({label:'',value:''})会报错
如果上一层的结构是[{label:'',value:'',children:[{label:'',value:'',children:[]}]}],执行结果会是期望的模样[{label:'',value:'',children:[{label:'',value:'',children:[{label:'',value:''}]}]}]
                            
查看完整回答
反对 回复 2019-08-17
  • 2 回答
  • 0 关注
  • 258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信