如何在javascript中获取两个数组之间的差异?

时间:2014-12-04 05:35:43

标签: javascript arrays html5

我有一个数组a = [1,2,3,4,5] b = [3,4,5,6,7]

这里我想要数组a [1,2]和数组b [6,7]的值,并存储在差异数组中,如下所示。

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]

这里我删除了数组a中的chkbx_710_52,chkbx_711_52,chkbx_710_53,chkbx_711_53复选框值

并在阵列b中添加了chkbx_705_52,chkbx_705_53,,chkbx_706_52,chkbx_706_53。

所以我想要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

2 个答案:

答案 0 :(得分:2)

当B的成员也存在于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);
  }
}

但是,你没有说是否有重复的成员,所以我假设没有,并以最简单的方式做,只是为了让你想到解决方案。

答案 1 :(得分:1)

你可以像下面这样得到它:

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