在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)
请注意,一些框架将此实现为函数,而其他框架则将该函数添加到数组原型中。
标签:indexOf,JavaScript,value,includes,_.,数组,某个,array From: https://www.cnblogs.com/xiaomandujia/p/17762983.html