搜尋

首頁  >  問答  >  主體

javascript - 以下的程式碼回傳跟想像的不一致,怎麼解?

function has(list, item) {
  list.forEach(v => {
    if (v === item) {
        return true
    }
  })
  return false
}

console.info(has([1,2,3], 1))

怎麼讓結果為true???

世界只因有你世界只因有你2752 天前541

全部回覆(5)我來回復

  • 世界只因有你

    世界只因有你2017-05-19 10:45:32

    1、forEach迴圈無法中斷
    2、用for迴圈
    3、用indexOf
    4、用ES6的includes

    回覆
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:45:32

    forEach方法無法中斷執行,總是會將所有成員遍歷完
    可以這樣

    return list.indexOf(item) !== -1;
    

    或用for循環

    回覆
    0
  • 某草草

    某草草2017-05-19 10:45:32

    箭頭函數沒有自己的this值,而是繼承自外圍作用域

    回覆
    0
  • 高洛峰

    高洛峰2017-05-19 10:45:32

    其實題主並不是不知道用其他方式來實現這個簡單的功能, 只是用forEach來做

    function has(list, item) {
        let flag = false
        list.forEach(v => {
            if (v === item) {
                flag = true
            }
        })
        return flag
    }
    
    console.info(has([1, 2, 3], 1))

    因為forEach的return truereturn false 並不是回傳值的作用, 所有隻能藉助flag

    回覆
    0
  • 黄舟

    黄舟2017-05-19 10:45:32

    雷雷

    回覆
    0
  • 取消回覆