如何在jquery或javascript中从两个不同的数组中查找唯一记录?

我想从两个不同的数组中获取唯一值。

JavaScript中有两个数组如下:

 var a=new Array; var b=new Array; a={'a','b','c','d','e'} b={'a','d','e','c'}  

我想输出像:

 new array => {'a','c','d','e'} 

如何使用JavaScript原型函数或jQuery函数从两个数组中找到唯一记录?

我不知道你的条款是否正确。 我的唯一值是在任一数组中只出现一次的成员。 根据您的示例,您似乎希望成员存在于两个数组(公共值或交集 )中。

您可以使用jQuery来处理这个问题。 grep()是你的朋友。

您可以在没有jQuery的情况下执行此操作,但我不确定本机filter()indexOf()方法是否具有最佳浏览器支持。

 var a = ['a', 'b', 'c', 'd', 'e'], b = ['a', 'd', 'e', 'c']; var common = $.grep(a, function(element) { return $.inArray(element, b) !== -1; }); console.log(common); // ["a", "c", "d", "e"] 

使用下划线,它很容易在_.intersection(arr1, arr2)

jsFiddle 。

我想你真打算写:

  

在任何情况下,您都可以对数组进行排序,并从不在另一个中的值中获取值,反之亦然,然后将这两个集合连接成一个。 你似乎被宠坏了选择,所以这是一个很好的基本javascript版本,应该适用于大多数浏览器。 使用最新浏览器的新function肯定会在旧版浏览器中失败。

 // Compares a to b. Returns all the elements in a that are not in b // If c provided, add unique elements to c function getUnique(a, b, c) { var c = c || []; var ta = a.slice().sort(); var tb = b.slice().sort(); var x, y, found = false; for (var i=0, iLen=ta.length; i 

但是你对第一个答案的评论表明你想要两个数组共有的元素,这更简单:

 function getCommon(a, b) { var c = []; var ta = a.slice().sort(); var tb = b.slice().sort(); var t, found; for (var i=0, iLen=ta.length; i 

您需要弄清楚如何处理重复项。 在第一种情况下,如果另一个数组中没有重复项,则重复项将被视为唯一。 在上文中,重复项无关紧要,除非它们在两个数组中都是重复的。

查找orignal答案: JavaScript数组差异

在这种情况下,您可以使用Set 。 它针对这种操作(联合,交叉,差异)进行了优化。

一旦不允许重复,请确保它适用于您的情况。

 var a = new JS.Set([1,2,3,4,5,6,7,8,9]); var b = new JS.Set([2,4,6,8]); a.intersection(b);//intersect will give you the common one 

像这样:

 var a=['a','b','c','d','e']; //Use brackets var b=['a','d','e','c'] var c = a.concat(b).sort(); var uniques = {}; for(var i=0; i 

现在uniquesArray只包含唯一值。 希望这可以帮助

我想借助JavaScript中的关联数组支持来完成此操作。