在leetcode上刷题的时候踩的坑,题目是这样的
简单思考了一下,用最简单的双循环就可以解决问题,于是习惯性用forEach遍历了两次
结果发现函数返回值是undefined
百度了一下,发现是因为forEach多次执行回调函数,回调函数中使用return没法直接终止forEach,只能终止单次的回调。所以return语句在forEach内部是无法跳出循环的。
解决方案:
1.方案一:js针对数组操作的另外两个方法some()与every()
2.方案二:for/while语句老实循环
总结原因还是对forEach方法理解不够到位
第一种:普通for循环
for(j = 0 j < arr.length j++) {
}
第二种:优化版for循环
for(j = 0,len=arr.length j < len j++) {
}
第三种:弱化版for循环
for(j = 0 arr[j]!=null j++) {
}
第四种:foreach循环
arr.forEach(function(e){
})
第五种:foreach变种
Array.prototype.forEach.call(arr,function(el){
})
第六种:for in循环
for(j in arr) {
}
第七种:map遍历
arr.map(function(n){
})
第八种:forof遍历(需要ES6支持)
for(let value of arr) {
})