一般常見的需求像是:
- 當 array 找到此 value 时,即停止輸入新的 value 到數組裡
- 當 array 包含特定 value 时,即執行某個 script
- 等等不勝凡舉
rails 在處理 value 是否存在 array 裡很容易,運用 include
or exists
而在 javascript 是怎麼檢查 value 是否存在 array 裡?
使用 Loop 循環檢查
1 | var names_arr = ['jimmy','nic','stan','kurt']; |
執行:
1 | console.log('status : ' + checkValue('jimmy', names_arr)); |
使用 jQuery.inArray()
1 | var names_arr = ['jimmy','nic','stan','kurt']; |
使用方法是: jQuery.inArray('你想查的值', your_array)
執行:
1 | // Searching in Array |
使用 your_array.indexOf()
1 | var names_arr = ['jimmy','nic','stan','kurt']; |
執行:
1 | // Search in Array |
使用 your_array.includes()
1 | var names_arr = ['jimmy','nic','stan','kurt']; |
執行:
1 | // Searching in Array |
屬於 ES6 (es2017) 的方法
使用時得格外小心,因為不兼容 IE ( Can I use ),这也是跟 indexOf()
最大的差别。
indexOf() vs includes() 两者比较
indexOf()
存在返回該 index,不存在返回 -1includes()
存在返回 true,不存在返回 falseincludes()
不兼容瀏覽器 ex: IEindexOf()
不支持檢查 NaN , undefined
1 | const arr = [1, 2, 3, 4, NaN]; |
Ref
- Includes() vs indexOf() in JavaScript - by John Samuel Obinna
Summary
- The includes method finds NaN and undefined whereas the indexOf method doesn’t.
- The includes() method does not distinguish between -0 and +0(This is not a bug, but clearly how javascript works. Check javascript Number type)
- Read more from MDN about Array.prototype.includes()
- IE does not support includes()
- Check if value exists in Array – jQuery and JavaScript - by Yogesh Singh