一尘不染

如何检 查数组是否在JavaScript中包含值?

javascript

找出JavaScript数组是否包含值的最简洁,最有效的方法是什么?

这是我知道的唯一方法:

function contains(a, obj) {
    for (var i = 0; i < a.length; i++) {
        if (a[i] === obj) {
            return true;
        }
    }
    return false;
}

有没有更好,更简洁的方法来实现这一目标?

这与Stack Overflow问题密切相关。
在JavaScript数组中查找项目的最佳方法?解决使用数组查找对象的问题indexOf


阅读 291

收藏
2020-04-22

共1个答案

一尘不染

现代的浏览器Array#includes,这不正是这一点,得到广泛支持的人,除IE:

console.log(['joe', 'jane', 'mary'].includes('jane')); //true

你也可以使用Array#indexOf,它不太直接,但对于过时的浏览器不需要使用polyfill

许多框架还提供类似的方法:

  • jQuery: $.inArray(value, array, [fromIndex])
  • Underscore.js:_.contains(array, value) (also aliased as _.include and _.includes)
  • Dojo Toolkit: dojo.indexOf(array, value, [fromIndex, findLast])
  • Prototype: array.indexOf(value)
  • MooTools: array.indexOf(value)
  • MochiKit: findValue(array, value)
  • MS Ajax: array.indexOf(value)
  • Ext: Ext.Array.contains(array, value)
  • Lodash: _.includes(array, value, [from]) (is _.contains prior 4.0.0)
  • Ramda: R.includes(value, array)

注意,有些框架将此功能实现为一个函数,而另一些框架则将该函数添加到数组原型中。

2020-04-22