JavaScript中是否有一种方法可以比较一个数组中的值,并查看它是否在另一个数组中?
类似于PHP的in_array函数?
JavaScript中是否有一种方法可以比较一个数组中的值,并查看它是否在另一个数组中?
类似于PHP的in_array函数?
当前回答
jQuery解决方案是可用的,检查文档在这里: http://api.jquery.com/jquery.inarray/
$.inArray( 10, [ 8, 9, 10, 11 ] );
其他回答
对于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的编辑代码。:)
现在有了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)
带下划线的in_array的等效形式是_.indexOf
例子:
_.indexOf([3,5,8], 8);//返回索引为8的2 _.indexOf([3,5,8], 10);//返回-1,未找到
将此代码添加到项目中,并使用对象样式的inArray方法
if (!Array.prototype.inArray) {
Array.prototype.inArray = function(element) {
return this.indexOf(element) > -1;
};
}
//How it work
var array = ["one", "two", "three"];
//Return true
array.inArray("one");