Web 前端开发 让前端飞

【Javascript】对等差分

2017-11-30  本文已影响0人  雨水之后

给出两个集合(如集合A = {1, 2, 3}和集合B = {2, 3, 4})),而数学术语“对等差分”的集合就是指由所有只在两个集合其中之一的元素组成的集合(A △ B = C = {1, 4})。对于传入的额外集合(如D = {2, 3}),你应该安装前面原则求前两个集合的结果与新集合的对等差分集合(C △ D = {1, 4} △ {2, 3} = {1, 2, 3, 4})。

function sym() {

  //不造有几个参数,所以就先轮出来
  var args = [];

  for(var i=0;i<arguments.length;i++){
    args.push(arguments[i]);
  }

  //函数:你没有的,result没有的,都插入result
  function diff(aOne,aTwo){

    var result = [];

    aOne.forEach(function(i){
      if(aTwo.indexOf(i)<0&&result.indexOf(i)<0){
        result.push(i);
      }
    });

    aTwo.forEach(function(i){
      if(aOne.indexOf(i)<0&&result.indexOf(i)<0){
        result.push(i);
      }
    });

    return result;

  }

  //reduce该数组,并排序
  return args.reduce(diff).sort();

}

验算:

sym([3, 3, 3, 2, 5], [2, 1, 5, 7], [3, 4, 6, 6], [1, 2, 3], [5, 3, 9, 8], [1]);

//[ 1, 2, 4, 5, 6, 7, 8, 9 ]

THE END.

上一篇 下一篇

猜你喜欢

热点阅读