检查数组中是否存在元素

这个问题在这里已经有了答案:

  • 如何检查数组是否包含JavaScript中的对象? 40个答案

  • ECMAScript 2016包含了专门用于解决答案的数组的includes()方法,所以现在是首选方法。 (截至2016年6月,您将需要使用polyfill,直到该方法在所有主流浏览器中本地实现。)

    [1, 2, 3].includes(2);     // true
    [1, 2, 3].includes(4);     // false
    [1, 2, 3].includes(3, 3);  // false
    

    码:

    function isInArray(value, array) {
      return array.indexOf(value) > -1;
    }
    

    执行:

    isInArray(1, [1,2,3]); // true
    

    更新(2017):

    在具有ECMAScript 6支持的现代浏览器中,您可以使用函数Array.prototype.includes,这可以更容易地检查数组中是否存在项目:

    const haystack = [1, 2, 3];
    const needle = 1;
    const isInArray = haystack.includes(needle);
    console.log(isInArray); // true

    只需使用indexOf

    haystack.indexOf(needle) >= 0
    

    如果您想支持旧的Internet Explorers(<IE9),则必须将当前的代码作为解决方法。

    除非你的清单是排序的,你需要比较每个值与针。 因此,您的解决方案和indexOf都必须平均执行n/2比较。 但是,由于indexOf是内置方法,因此可能会使用其他优化,并且在实践中会稍微快一点。 请注意,除非您的应用程序经常在列表中搜索(例如每秒1000次)或者列表很大(例如10万个条目),否则速度差异无关紧要。

    链接地址: http://www.djcxy.com/p/13027.html

    上一篇: Check if an element is present in an array

    下一篇: Javascript Bug: set audio object controls attribute True = = False