JS如何实现回调匹配值时立即中断for循环并返回结果的辅助函数
问题分析
原有代码存在3个问题导致无法达到预期效果:
- 循环判断条件中误用了未定义的
data变量,实际应该使用传入的参数dataArray - 没有接收回调函数的返回值,无法感知是否匹配到符合条件的元素
arrayLoop函数本身没有设置返回值,也没有提前终止循环的逻辑
修改后的实现
function arrayLoop(dataArray, callback){ for(var i=0; i < dataArray.length; i++){ const res = callback(dataArray[i]); // 匹配到符合条件的元素直接返回true,自动终止循环 if (res === true) { return true; } } // 所有元素遍历完成仍未匹配,返回false return false; }
测试用例修正
你提供的测试用例存在语法笔误,多写了一个等号,修正后即可正常运行:
// 原写法 var arr = = [6,1,4,9,2]; 多了= var arr = [6,1,4,9,2]; var test = arrayLoop(arr, function(item){ if (item==4) return true; }); console.log(test); // 输出true
效果说明
修改后代码在匹配到值为4的元素时就会立即返回true,不会继续遍历后续的9、2元素,满足尽早中断循环的要求。
内容的提问来源于stack exchange,提问作者samar
相关产品推荐
相关产品推荐

