javascript - 以下的程式碼回傳跟想像的不一致,怎麼解?
世界只因有你
世界只因有你 2017-05-19 10:43:32
0
5
536
function has(list, item) {
  list.forEach(v => {
    if (v === item) {
        return true
    }
  })
  return false
}

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

怎麼讓結果為true???

世界只因有你
世界只因有你

全部回覆(5)
世界只因有你

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

过去多啦不再A梦

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

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

或用for循環

某草草

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

小葫芦

其實題主並不是不知道用其他方式來實現這個簡單的功能, 只是用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

黄舟

雷雷

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板