如何在JavaScript中获得差异btw两个数组?
我有一个数组a = [1,2,3,4,5] b = [3,4,5,6,7]如何在JavaScript中获得差异btw两个数组?
这里我想要数组a [1,2]和数组的值b [6,7]并存储在如下所示的diff数组中。
C = [1,2] d = [6,7]
由于提前。
其状如= [chkbx_705_49,chkbx_706_49,chkbx_707_49,chkbx_708_49,chkbx_709_49,chkbx_710_49,chkbx_711_49,chkbx_712_49,chkbx_714_49,chkbx_705_50,chkbx_706_50,chkbx_707_50,chkbx_708_50,chkbx_709_50,chkbx_710_50,chkbx_711_50,chkbx_705_51,chkbx_706_51,chkbx_707_51,chkbx_708_51,chkbx_711_51 ,chkbx_710_52,chkbx_711_52,chkbx_710_53,chkbx_711_53]
b = [chkbx_705_49,chkbx_705_50,chkbx_705_51,chkbx_705_52,chkbx_705_53,chkbx_706_49,chkbx_706_50,chkbx_706_51,chkbx_706_52,chkbx_706_53,chkbx_707_49,chkbx_707_50,chkbx_707_51,chkbx_708_49,chkbx_708_50,chkbx_708_51,chkbx_709_49, chkbx_709_50,chkbx_710_49,chkbx_710_50,chkbx_711_49,chkbx_711_50,chkbx_711_51,chkbx_712_49]
这里我删除chkbx_710_52,chkbx_711_52,chkbx_710_53,chkbx_711_53复选框值从阵列的
并加入chkbx_705_52,chkbx_705_53,chkbx_706_52,chkbx_706_53在数组b加入。
所以我想C = chkbx_710_52,chkbx_711_52,chkbx_710_53,chkbx_711_53
d = chkbx_705_52,chkbx_705_53,chkbx_706_52,chkbx_706_53
当A的成员也存在于B,删除在两个:
var a = [1,2,3,4,5];
var b = [3,4,5,6,7];
var c = a.slice();
var d = b.slice();
var len = c.length;
while(len--) {
var idx = d.indexOf(c[len]);
if (idx > -1) {
c.splice(len, 1);
d.splice(idx, 1);
}
}
但是,你没有说是否有重复的成员,所以我假设不,并以最简单的方式做,只是为了给你一个解决方案的想法。
这两个数组(3,4,5)都有重复,我只想回顾c = [1,2] d = [6,7]的值 – kiranstack 2014-12-04 07:38:13
不,我的意思是我假设你没有重复一个数组,例如'a = [1,2,3,3,4,5]'。但是,删除数组中的重复是另一个问题,所以我跳过它。 – Leo 2014-12-04 08:03:25
试试我的代码,它适用于您的示例。 – Leo 2014-12-04 08:04:43
你可以得到它象下面这样:
var array1 = [1,2,3,4,5];
var array2 = [3,4,5,6,7];
var foo1 = [], foo2=[];
var i = 0;
jQuery.grep(array1, function(el) {
if (jQuery.inArray(el, array2) == -1) foo1.push(el);
i++;
});
jQuery.grep(array2, function(el) {
if (jQuery.inArray(el, array1) == -1) foo2.push(el);
i++;
});
alert(" the difference is " + foo1);
alert(" the difference is " + foo2);
这不是一个带有jQuery标签的问题。 – jfriend00 2014-12-04 05:46:22
在[此帖](http://stackoverflow.com/questions/7958292/mimicking-sets-in-javascript/描述的预建组对象7958422#7958422)和[在GitHub上](https://github.com/jfriend00/Javascript-Set/blob/master/set.js)有各种分析对象集合的方法,比如你的数组:'。差异()','.union()','。intersection()','.isSubset()','.isSuperSet()',等等......你可以使用它们或者看代码的工作方式。 – jfriend00 2014-12-04 05:41:49