检查数组中是否存在元素

检查数组中是否存在元素

我现在用来检查这个功能如下:

function inArray(needle,haystack){
    var count=haystack.length;
    for(var i=0;i<count;i++)
    {
        if(haystack[i]===needle){return true;}
    }
    return false;}

有用。我正在寻找的是,是否有更好的方法来做到这一点。


慕哥9229398
浏览 914回答 3
3回答

一只萌萌小番薯

ECMAScript 2016采用了includes()一种专门解决问题的阵列方法,因此现在是首选方法。[1, 2, 3].includes(2);&nbsp; &nbsp; &nbsp;// true[1, 2, 3].includes(4);&nbsp; &nbsp; &nbsp;// false[1, 2, 3].includes(1, 2);&nbsp; // false (second parameter is the index position in this array at which to begin searching)截至2018年7月,几乎所有主流浏览器都已实现,如果您需要支持IE,则可以使用polyfill。

侃侃尔雅

码:function&nbsp;isInArray(value,&nbsp;array)&nbsp;{ &nbsp;&nbsp;return&nbsp;array.indexOf(value)&nbsp;>&nbsp;-1;}执行:isInArray(1,&nbsp;[1,2,3]);&nbsp;//&nbsp;true更新(2017年):在遵循ECMAScript 2016(ES7)标准的现代浏览器中,您可以使用函数Array.prototype.includes,这样可以更容易地检查数组中是否存在项:const&nbsp;array&nbsp;=&nbsp;[1,&nbsp;2,&nbsp;3];const&nbsp;value&nbsp;=&nbsp;1;const&nbsp;isInArray&nbsp;=&nbsp;array.includes(value);console.log(isInArray);&nbsp;//&nbsp;true

紫衣仙女

只需使用indexOf:haystack.indexOf(needle)&nbsp;>=&nbsp;0如果要支持旧的Internet Explorer(<IE9),则必须包含当前代码作为解决方法。除非您的列表已排序,否则您需要将每个值与针进行比较。因此,您的解决方案indexOf都必须n/2平均执行比较。但是,由于它indexOf是一种内置方法,它可能会使用额外的优化,并且在实践中会稍微快一些。请注意,除非您的应用程序经常在列表中搜索(例如每秒1000次)或列表很大(例如100k条目),否则速度差异无关紧要。
打开App,查看更多内容
随时随地看视频慕课网APP