来自现有两个数组的Javascript / Jquery-新数组

时间:2013-12-31 11:31:37

标签: javascript jquery

我有两个数组

 var a= $("#update-select1").val();  // gives value 1,2,4
 var b= $("#update-select2").val();  // 1,2,5

我想要上面两个数组中的两个不同的数组。

//array has the values which is in  `b` but not in `a`
var c = [5]

//another array has value in `a` but not in `b`
var d =[4]

4 个答案:

答案 0 :(得分:2)

您可以这样使用Array.filter

var c = [1,2,5]
          .filter(function(a){return this.indexOf(a) === -1},[1,2,4]); //=> [5]
var d = [1,2,4]
          .filter(function(a){return this.indexOf(a) === -1},[1,2,5]); //=> [4]

或者:

function notIn(a){
   return this.indexOf(a) === -1;
}
var a = [1,2,4]
   ,b = [1,2,5]
   ,c = b.filter(notIn,a)
   ,d = a.filter(notIn,b);

See also

答案 1 :(得分:1)

您可以尝试使用grep()方法

var a1 = [1, 2, 4];
var a2 = [1, 2, 5];
var difference = $.grep(a1, function (x) {
                     return $.inArray(x, a2) < 0
                 });

alert(" the difference is " + difference);​  

<强> JSFiddle

答案 2 :(得分:1)

  

我知道这是一个老问题,但我想我会分享这个   小技巧。

var diff = $(old_array).not(new_array).get();
  

diff现在包含old_array中不在new_array中的内容

Compare 2 arrays which returns difference

上找到了这个

答案 3 :(得分:0)

尝试这样的事情

var a= [1,2,4];
var b= [1,2,5];

 var c = [];
 jQuery.each(b,function(k,v){
    if(a.indexOf(v) < 0){
        c.push(v);
    }
 })
 console.log(c);//[5]

 var d = [];
 jQuery.each(a,function(k,v){
    if(b.indexOf(v) < 0){
        d.push(v);
    }
 })
 console.log(d);//[4]