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

请各位大佬指点!js 使用递归无法退出循环?大佬们有什么好的建议?

请各位大佬指点!js 使用递归无法退出循环?大佬们有什么好的建议?

慕妹3242003 2019-06-09 08:59:12
我根据对象中的code与数组中的做对比,然后成立的再执行一遍,可是只有两个能成立啊也就执行两回,怎么就无限循环了functiona(){for(leti=0;i<arr.length;i++){let{code}=objletnewCode=code.substring(0,code.length-1)if(newCode===arr[i].code){arr1.push(arr[i])console.log(arr1)a()}}}a()
查看完整描述

2 回答

?
jeck猫

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

因为你没有已判断过的标记出来,导致每次执行a()方法时,都会拿到那个code,然后进入到if判断中。
你可以把已匹配到的arr[i]中的code设置为另一个变量,下次匹配时就匹配不到了,例如:
if(newCode===arr[i].code){
arr[i].code='#';
arr1.push(arr[i])
console.log(arr1)
a()
}
而且,你这个好像不用递归吧,直接一个循环就搞定了
                            
查看完整回答
反对 回复 2019-06-09
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

按你说的这种要求,并不需要递归
functiona(){
for(leti=0;ilet{code}=obj
code=code.substring(0,code.length-1)
if(code===arr[i].code){
arr1.push(arr[i])
}
}
}
a()
console.log(arr1)
递归无限循环,是因为没有设置终止条件。
                            
查看完整回答
反对 回复 2019-06-09
  • 2 回答
  • 0 关注
  • 1322 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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