3 回答

TA貢獻1795條經驗 獲得超7個贊
ECMAScript 2016采用了includes()
一種專門解決問題的陣列方法,因此現在是首選方法。
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(1, 2); // false (second parameter is the index position in this array at which to begin searching)
截至2018年7月,幾乎所有主流瀏覽器都已實現,如果您需要支持IE,則可以使用polyfill。

TA貢獻1801條經驗 獲得超16個贊
碼:
function isInArray(value, array) { return array.indexOf(value) > -1;}
執行:
isInArray(1, [1,2,3]); // true
更新(2017年):
在遵循ECMAScript 2016(ES7)標準的現代瀏覽器中,您可以使用函數Array.prototype.includes,這樣可以更容易地檢查數組中是否存在項:
const array = [1, 2, 3];const value = 1;const isInArray = array.includes(value);console.log(isInArray); // true

TA貢獻1839條經驗 獲得超15個贊
只需使用indexOf
:
haystack.indexOf(needle) >= 0
如果要支持舊的Internet Explorer(<IE9),則必須包含當前代碼作為解決方法。
除非您的列表已排序,否則您需要將每個值與針進行比較。因此,您的解決方案indexOf
都必須n/2
平均執行比較。但是,由于它indexOf
是一種內置方法,它可能會使用額外的優化,并且在實踐中會稍微快一些。請注意,除非您的應用程序經常在列表中搜索(例如每秒1000次)或列表很大(例如100k條目),否則速度差異無關緊要。
添加回答
舉報