问题:我自定义了一个each迭代函数,想比较两个数组是否一致。如果遍历过程中发现不一样,则退出循环。如何退出循环现在有些疑问。代码:/* 自己实现迭代器*/const each = function(arr,callback){ for(var i=0;i<arr.length;i++){ callback.call(arr[i],i,arr[i]); }}/* 比较两数组是否一样 -----方式一*/const compare = function(arr1,arr2){ if(arr1.length !== arr2.length){ console.log("两数组长度不一致"); return; } each(arr1,function(index,item){ if(item !== arr2[index]){ console.log("两数组不一致"); return; } })}/* 比较两数组是否一样-----方式二*/const compare = function(arr1,arr2){ if(arr1.length !== arr2.length){ console.log("两数组长度不一致"); return; } var breaked = false; each(arr1,function(index,item){ if(breaked){ return; } if(item !== arr2[index]){ console.log("两数组不一致"); breaked = true; } })}疑问:使用方式一,如果不相等,循环还会继续执行,不会终止。但是使用方式二可以终止循环。请问两方式的区别在哪里。
5 回答
幕布斯1329279
TA贡献8条经验 获得超0个赞
问题的根源在你实现的each中,callback执行的结果在each中看没有任何意义,一直在for循环中。另外,你的两种方式实际上效果是一样的,不信你在
if(breaked){
return;
}
加上console.log试试
添加回答
举报
0/150
提交
取消