且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-11-01 09:32:39

现代浏览器有 Array#includes,它完全得到广泛支持 IE 除外:

Modern browsers have Array#includes, which does exactly that and is widely supported by everyone except IE:

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

您也可以使用 Array#indexOf,它不太直接,但不需要为过时的浏览器提供 polyfill.

You can also use Array#indexOf, which is less direct, but doesn't require polyfills for outdated browsers.

console.log(['joe', 'jane', 'mary'].indexOf('jane') >= 0); //true

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

Many frameworks also offer similar methods:

  • 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)

请注意,一些框架将其实现为一个函数,而另一些框架则将该函数添加到数组原型中.

Notice that some frameworks implement this as a function, while others add the function to the array prototype.