找出 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
在数组中查找对象的问题。
原文由 brad 发布,翻译遵循 CC BY-SA 4.0 许可协议
现代浏览器有
Array#includes
,它 正是 这样做的,并且得到了除 IE 之外的所有人 的广泛支持:您也可以使用
Array#indexOf
,它不那么直接,但对于过时的浏览器不需要 polyfill。许多框架也提供了类似的方法:
jQuery:
$.inArray(value, array, [fromIndex])
Underscore.js:
_.contains(array, value)
(也别名为_.include
和_.includes
)Dojo 工具包:
dojo.indexOf(array, value, [fromIndex, findLast])
原型:
array.indexOf(value)
MooTools:
array.indexOf(value)
MochiKit:
findValue(array, value)
MS Ajax:
array.indexOf(value)
分机:
Ext.Array.contains(array, value)
Lodash:
_.includes(array, value, [from])
(是_.contains
之前的 4.0.0)Ramda:
R.includes(value, array)
请注意,一些框架将其实现为一个函数,而另一些框架则将该函数添加到数组原型中。