6

是否存在与 2 个数组相交的 JS 或 jQuery 函数,例如:

var array1 = [1,2,3,4,5];
var array2 = [2,4,8,9,0];
var result = someFun(array1, array2);
//result = [2,4];

当然我可以手动制作,但可能存在更短的方式。

4

2 回答 2

33

因为你有 jQuery 标签:

$(array1).filter(array2);

或者:

$.map(array1, function(el){
  return $.inArray(el, array2) < 0 ? null : el;
})

或者(不适用于 IE8 或更低版本):

array1.filter(function(el) {
    return array2.indexOf(el) != -1
});

例子:

> array1 = [1,2,3,4,5];
[1, 2, 3, 4, 5]
> array2 = [2,4,8,9,0];
[2, 4, 8, 9, 0]
> array1.filter(function(el) {
    return array2.indexOf(el) != -1
  });
[2, 4]
于 2013-07-23T08:39:58.017 回答
1

这应该工作

var alpha = [1, 2, 3, 4, 5, 6],
    beta = [4, 5, 6, 7, 8, 9];

$.arrayIntersect = function(a, b)
{
    return $.grep(a, function(i)
    {
        return $.inArray(i, b) > -1;
    });
};
console.log( $.arrayIntersect(alpha, beta) );

演示

于 2013-07-23T08:45:07.270 回答