【问题标题】:Take two arrays and return only unique values取两个数组并仅返回唯一值
【发布时间】:2016-12-06 21:58:24
【问题描述】:

我一直在寻找一种(更好的)方法来执行以下操作。取两个数组并仅返回唯一值。例如。 ['value1', 'value2'] 和 ['value2', 'value3'] 应该返回 'value1' 和 'value3'。以下似乎可行,但我想知道是否有更简单/更简洁的方法来实现相同的结果。

function diffArray(arr1, arr2) {
  var newArr = arr1.filter(function(a) {
    var count = 0;
    arr2.forEach(function (x) {
      if (x === a) {count++;}
    });
    if (count !== 0) {return false;}
    return true;
  }).concat(arr2.filter(function(b) {
    var count = 0;
    arr1.forEach(function(y) {
      if (y === b) {count++;}
    });
    if (count !== 0) {return false;}
    return true;
  }));
  return newArr;
}

console.log(diffArray([1, 2, 3, 5], [1, 2, 3, 4, 5]));
//Should return only 4.

【问题讨论】:

标签: javascript arrays


【解决方案1】:

Th0rndike 答案的固定版本:

var a1=[1,2];
var a2=[2,3];

function diffArray(a1,a2){
    return a2.filter(function(item){
       return a1.indexOf(item) < 0;
    }).concat(a1.filter(function(item){
       return a2.indexOf(item) < 0;
    }));
}

console.log(diffArray(a1,a2));

【讨论】:

    【解决方案2】:

    如果你可以使用库,我建议使用 lodash。 有一个通用的 N 数组操作。

    _.xor([2, 1], [2, 3]);
    

    https://lodash.com/docs/4.17.2#xor

    【讨论】:

    猜你喜欢
    • 2015-07-19
    • 1970-01-01
    • 2018-12-25
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 2016-06-25
    • 1970-01-01
    相关资源
    最近更新 更多