# +_indexOf 你好奇妙 ### 先來看一個認知上合理的例子 ```javascript! const a = 1; const b = 2; const c = 3; const arr = [ a, b, c ] console.log(arr.indexOf(a)); // 0 console.log(arr.indexOf(b)); // 1 console.log(arr.indexOf(c)); // 2 ``` ### 再看一下這個莫名其妙的例子 ```javascript! const d = 0; const e = 0; const f = 0; const arr2 = [ d, e, f ] console.log(arr2.indexOf(d)); // 0 console.log(arr2.indexOf(e)); // 0 console.log(arr2.indexOf(f)); // 0 // 為啥!e 和 f 都會跟我說 index 是 0 😢😢😢 不是應該查找元素的索引值嗎 ``` ### 運作原理 > MDN:indexOf() 方法會回傳給定元素於陣列中==第一個被找到==之索引,若不存在於陣列中則回傳 -1。 所以它將會遍歷 () 中元素的值,並由左至右去尋找陣列元素的索引,先找到就會回傳該元素的索引值。 例如 `console.log(e);` 在 `const arr2 = [ d, e, f ]` 其中查找 `e` 的 index 時,會先判別 `e` 的值是什麼,是 0!!! 所以它就覺得喔,誰是 0,`d` 啊,就給你回傳 `d` 的 index => 0 ### 看看 J 個,如果變數指向的都是同一個值 ```javascript! const g = 4 const h = 4 const i = 4 const arr3 = [ g, h, i ]; console.log(arr3.indexOf(g)); // 0 console.log(arr3.indexOf(h)); // 0 console.log(arr3.indexOf(i)); // 0 ``` 奇妙現象,讚讚掰掰
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up