Trying to solve symmetric difference using Javascript

后端 未结 16 1436
伪装坚强ぢ
伪装坚强ぢ 2020-11-29 10:12

I am trying to figure out a solution for symmetric difference using javascript that accomplishes the following objectives:

  • accepts an unspecified number of ar
16条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-29 10:41

    This works for me:

    function sym() {
      var args = [].slice.call(arguments);
      
      var getSym = function(arr1, arr2) {
        return arr1.filter(function(each, idx) {
          return arr2.indexOf(each) === -1 && arr1.indexOf(each, idx + 1) === -1;
        }).concat(arr2.filter(function(each, idx) {
          return arr1.indexOf(each) === -1 && arr2.indexOf(each, idx + 1) === -1;
        }));
      };
      
      var result = getSym(args[0], args[1]);
      var len = args.length - 1, i = 2;
      while (--len) {
        result = [].concat(getSym(result, args[i]));
        i++;
      }
      
      return result;
    }
    
    console.info(sym([1, 1, 2, 5], [2, 2, 3, 5], [6, 8], [7, 8], [9]));

提交回复
热议问题