比较2个数组的结果不同

时间:2015-12-04 12:34:54

标签: javascript

如何将2个数组与当前结果进行比较:

  1. 只有来自a的值不是b

  2. 中的值
  3. b中的值不是a

    中的值

    var a = [15404300,1567727156,3164959543,92767925,309935495,2759310935,989025462,3109960889,2232537998,67833886,23514543,86720742,837670914,338878286,2598297517,32190488,3292414118,558573564,2813085991,118447616,2380667550];

    var b = [3292414118,2598297517,123];

  4. 当前代码

    for (var i = 0; i < a.length; i++) {
        for (var j = 0; j < b.length; j++) {
            if (a[i] == b[j]) {
    
            }
            if(b[j] !== a[i]){
    
            }
        }
    }
    

    JSON对象的解决方案

    var a = [{ data: 15404300, id: 0 },{ data: 1567727156, id: 0 },{ data: 3164959543, id: 0 },{ data: 92767925, id: 0 },{ data: 3181200014, id: 0 },{ data: 3292414118, id: 1 },{ data: 2598297517, id: 2 }];
    var b = [{ data: 3292414118, id: 1 },  { data: 2598297517, id: 2 },  { data: 123, id: 3 }];
    
    
    a.forEach(function(key) { 
    
        var keyData = key.data;
        if (-1 === b.map(function(d) { return d['data']; }).indexOf(keyData)) {
    
           res.push(key);
        }
    
    }, this);
    

2 个答案:

答案 0 :(得分:1)

//a-b:
var res = []; // the resulting array

a.forEach(function(key) {
  if (-1 === b.indexOf(key)) {
    res.push(key);
  }
}, this);

对于b-a,只需在示例中交换a和b。

答案 1 :(得分:1)

看看这个。

var resA = [];
a.forEach(function(v,i){ if( b.indexOf(v) < 0) resA.push(v)});
var resB = [];
b.forEach(function(v,i){ if( a.indexOf(v) < 0) resB.push(v)});

或使用过滤器以更干净的方式

var resA = a.filter(function(v){ if(b.indexOf(v) < 0) return v ; });
var resB = b.filter(function(v){ if(a.indexOf(v) < 0) return v ; });