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");