jquery函数通过相同的元素相交数组[重复]

Posted

技术标签:

【中文标题】jquery函数通过相同的元素相交数组[重复]【英文标题】:jquery function to intersect arrays by the same elements [duplicate] 【发布时间】:2013-07-22 05:34:35 【问题描述】:

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

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

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

【问题讨论】:

您的实际问题(是否存在这样的功能)的答案是:否。 @FelixKling 好的,谢谢,这是我想要的 【参考方案1】:

因为你有 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]

【讨论】:

这里的 jQuery 在哪里? 嗯...我不确定filter 是否可以在没有 jQuery 的情况下在 IE8 或更低版本中工作,但我可能错了。 那么你应该提供jQuery解决方案,因为array.filter()是一个原型方法。 jQuery方法被称为$.grep() 不知道有什么大惊小怪的。我可以在 jQuery 数组中使用“filter”、“not”等。没有问题。这是交集,确实如此,但也回答了一个更普遍的问题 从未意识到$(array1).filter(array2) 可以进行纯数组操作。这有帮助!【参考方案2】:

这应该工作

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

DEMO

【讨论】:

以上是关于jquery函数通过相同的元素相交数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 不相交

如何使用jQuery在某些特定div中选择具有相同名称的所有元素[重复]

使用jQuery从数组中选择一个随机元素[重复]

jQuery从后退按钮上的数组中删除最后一个元素[重复]

数组---存在重复元素

通过javascript添加重复元素[重复]