JavaScript中是否有一种方法可以比较一个数组中的值,并查看它是否在另一个数组中?
类似于PHP的in_array函数?
JavaScript中是否有一种方法可以比较一个数组中的值,并查看它是否在另一个数组中?
类似于PHP的in_array函数?
当前回答
对于Dojo Toolkit,您将使用Dojo . indexof()。看到dojo。用于文档的是indexOf,用于示例的是Bryan Forbes的Arrays Made Easy。
其他回答
如果您只想检查数组中是否有单个值,那么Paolo的代码将完成这项工作。如果你想检查哪些值对两个数组都是公共的,那么你会想要这样的东西(使用Paolo的inArray函数):
function arrayIntersect(a, b) {
var intersection = [];
for(var i = 0; i < a.length; i++) {
if(inArray(b, a[i]))
intersection.push(a[i]);
}
return intersection;
}
这将返回一个包含a和b中的值的数组。(从数学上讲,这是两个数组的交集。)
编辑:关于问题的解决方案,请参阅Paolo的编辑代码。:)
var value = 'a';
var array = ['a', 'b', 'c'];
if(array.indexOf(value)){
// exists in array
} else {
// Not exists in array
}
如果索引不是按顺序排列的,或者索引不是连续的,那么这里列出的其他解决方案中的代码将会中断。一个更好的解决方案可能是:
function in_array(needle, haystack) {
for(var i in haystack) {
if(haystack[i] == needle) return true;
}
return false;
}
而且,作为额外的奖励,这里有与PHP的array_search(用于查找数组中元素的键值)等效的函数:
function array_search(needle, haystack) {
for(var i in haystack) {
if(haystack[i] == needle) return i;
}
return false;
}
我在SO上找到了一个很棒的jQuery解决方案。
var success = $.grep(array_a, function(v,i) {
return $.inArray(v, array_b) !== -1;
}).length === array_a.length;
我希望有人能发布一个例子,如何在下划线做到这一点。
现在有了Array.prototype.includes:
includes()方法确定数组是否包含某个对象 元素,返回true或false。
var a = [1, 2, 3];
a.includes(2); // true
a.includes(4); // false
语法
arr.includes(searchElement)
arr.includes(searchElement, fromIndex)