[JavaScript]for循环里的return可以终止遍历,forEach里的return不能终止遍历

更细节的内容可以在MDN中学习:  https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

 

for循环里的return可以终止遍历,forEach里的return不能终止遍历

在个人实践中多次遇到这个问题,今天是在验证日麻手牌每种牌不多于4个的时候遇到的。

解决方法1:使用基本的for(    ;    ;    )循环

var count = [0, 0, 0, 0, 14, 0, 0, 0, 0]
for (var i = 0; i < count.length; i++) {
     console.log('count item: ', count[i])
     if (count[i] > 4) {
          // array.foreach里面不能用return,这个地方可以用for循环
          return { carddict: carddict, num: 0, err: '牌数量错误!单种牌不得多于4张!' } 
     }
}

 

 解决方法2:先声名一个变量,在遍历到有问题的地方给这个变量赋值,遍历之后返回这个变量

var msg = null
// 验证杠牌是4张
if (gangcards.num > 0) {
    for (i in gangcards.carddict) {
        console.log(gangcards.carddict[i])
        gangcards.carddict[i].forEach(function (item) {
            // console.log('check gangcards item ------> ', handcards_count[i][item-1])
            if(handcards_count[i][item - 1] !=4){
                console.log('杠牌输入不合法:' + item + i)
                // array.foreach里面不能用return,这个地方用变量取出来
                msg =  '杠牌输入不合法:' + item + i   
            }
        })
    }
}

return msg 

 

做一记录,如标题。

 

*-*-*-*-*-*-*-*-*-*-*-*

扩展:

1. 函数 return 只能返回一个值,如果逗号隔开多个值,则返回最后一个值

var fn3 = function(){
    return 1, 2, 3
}
console.log('fn3 return: ', fn3())     // fn3 return: 3

2. 函数没有写 return,则返回 undefined。

3. break, continue, return 的区别

break 结束当前的循环体(for, while等)
continue 跳出当前循环,继续执行下次循环(for, while等)
return

不仅可以退出循环,还能够返回return语句中的值,
同时还可以结束当前函数体内的代码

 

posted @ 2022-10-10 10:15  夕苜19  阅读(551)  评论(0编辑  收藏  举报