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

javascript 数组中循环添加字典列表

javascript 数组中循环添加字典列表

至尊宝的传说 2019-05-20 09:56:59
有三组以下格式的数组数据,想将这三组中的数据合并,出现问题报错如下: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 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

出错原因
遍历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-05-20
  • 2 回答
  • 0 关注
  • 1467 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号