找出 JavaScript 数组是否包含值的最简洁、最有效的方法是什么?
这是我知道的唯一方法:
function contains(a, obj) {
for (var i = 0; i < a.length; i++) {
if (a[i] === obj) {
return true;
}
}
return false;
}
有没有更好、更简洁的方法来实现这一点?
这与 Stack Overflow 问题密切相关 Best way to find an item in a JavaScript Array? 它解决了使用 indexOf
在数组中查找对象的问题。
最佳答案
现代浏览器有 Array#includes
,它完全做到了这一点,并且 is widely supported除 IE 之外的所有人:
console.log(['joe', 'jane', 'mary'].includes('jane')); // true
您还可以使用Array#indexOf
,这不太直接,但不需要针对过时的浏览器进行填充。
console.log(['joe', 'jane', 'mary'].indexOf('jane') >= 0); // true
许多框架也提供类似的方法:
- jQuery:
$.inArray(value, array, [fromIndex])
- 下划线.js:
_.contains(array, value)
(也别名为_.include
和_.includes
) - Dojo 工具包:
dojo.indexOf(array, value, [fromIndex, findLast])
- 原型(prototype):
array.indexOf(value)
- MooTools:
array.indexOf(value)
- MochiKit:
findValue(array, value)
- MS Ajax:
array.indexOf(value)
- 分机:
Ext.Array.contains(array, value)
- 洛达什:
_.includes(array, value, [from])
(是_.contains
4.0.0 之前的版本) - lambda :
R.includes(value, array)
请注意,某些框架将其实现为函数,而其他框架则将该函数添加到数组原型(prototype)中。
关于javascript - 在 JavaScript 中如何检查数组是否包含值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40976417/