亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查數組中是否存在元素

檢查數組中是否存在元素

慕哥9229398 2019-07-29 10:58:20
檢查數組中是否存在元素我現在用來檢查這個功能如下:function inArray(needle,haystack){     var count=haystack.length;     for(var i=0;i<count;i++)     {         if(haystack[i]===needle){return true;}     }     return false;}有用。我正在尋找的是,是否有更好的方法來做到這一點。
查看完整描述

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。


查看完整回答
反對 回復 2019-07-29
?
侃侃爾雅

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


查看完整回答
反對 回復 2019-07-29
?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

只需使用indexOf

haystack.indexOf(needle) >= 0

如果要支持舊的Internet Explorer(<IE9),則必須包含當前代碼作為解決方法。

除非您的列表已排序,否則您需要將每個值與針進行比較。因此,您的解決方案indexOf都必須n/2平均執行比較。但是,由于它indexOf是一種內置方法,它可能會使用額外的優化,并且在實踐中會稍微快一些。請注意,除非您的應用程序經常在列表中搜索(例如每秒1000次)或列表很大(例如100k條目),否則速度差異無關緊要。


查看完整回答
反對 回復 2019-07-29
  • 3 回答
  • 0 關注
  • 951 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號