iT邦幫忙

1

JavaScript .find() 找不到0

為什麼Test A印不出0呢?
是因為if還是因為find()呢?

https://ithelp.ithome.com.tw/upload/images/20200804/20119815sVyGA6GkZP.png

1 個回答

2
dragonH
iT邦超人 5 級 ‧ 2020-08-04 01:25:58
最佳解答

因為

find

會回傳遞一個符合條件的值

所以迴圈第一圈

i = 0

arr.find(index => index === 0)

也就會回傳 0

但是

if (0) 不會成立

所以就不會印出來

最後問 code 的問題請貼 code

不要只貼圖

看更多先前的回應...收起先前的回應...
hypons iT邦新手 5 級 ‧ 2020-08-04 01:37:25 檢舉

所以是因為0是等false所以不會回傳啊...
請問甚麼方法可以避免呢?

不好意思,還以為貼圖會比較清楚 lol

fillano iT邦超人 1 級 ‧ 2020-08-04 09:22:42 檢舉

沒找到的話,會回傳undefined,可以用這個來判斷。

if('undefined' === typeof arr.find(index=>index===0)) ...

不過如果是這麼簡單的比對,用indexOf會比較方便。

dragonH iT邦超人 5 級 ‧ 2020-08-04 09:43:04 檢舉

hypons

如果你只是要找有沒有存在

fillano大 說的

indexOf 會比較好

hypons iT邦新手 5 級 ‧ 2020-08-05 06:38:17 檢舉

謝謝兩位大大,我回去試試適不適合~~

iT邦新手 5 級 ‧ 2020-08-07 15:56:46 檢舉

補充一個小事:
arr.find(index => index === 0)
這裡如果你是想抓 index 的話,這樣不會抓到 index,會抓到 value 喔。
他的 arguments 是 array,不是 object,所以是照順序的,不是你打 index 就是 index。
要這樣才可以抓到 index:
arr.find((value, index) => index === 0)

hypons iT邦新手 5 級 ‧ 2020-08-16 18:01:33 檢舉


對吼!這麼基本的事都忘記了!
謝謝你。

我要發表回答

立即登入回答