在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在数组中查找对象。
现代浏览器具有Array#includes,它确实可以做到这一点,并且除了IE之外,每个人都广泛支持它:
console.log(['joe', 'jane', 'mary'].includes('jane')); // true
你也可以使用Array#indexOf,虽然它不太直接,但不需要为过时的浏览器提供polyfill。
console.log(['joe', 'jane', 'mary'].indexOf('jane') >= 0); // true
许多框架也提供了类似的方法:
- jQuery:
$.inArray(value, array, [fromIndex]) - Underscore.js:
_.contains(array, value)(也称为_.include和_.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])(在4.0.0之前是_.contains) - Ramda:
R.includes(value, array)
请注意,一些框架将此实现为函数,而其他框架则将该函数添加到数组原型中。

浙公网安备 33010602011771号