JSFiddle - React, Tailwind, and code Playground

by Kabeer Rifaye

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

JavaScript

var arr = [{
  "_index": "map_link_info",
  "_type": "config",
  "_id": "usmsc2-bb-cr1et-0/0/3usmsc2-bb-pe1",
  "_score": 1,
  "_source": {
    "in_bw_used": "0",
    "bundle_intf": "Unknown",
    "dst_x": "1150",
    "dest": "usmsc2-bb-pe1",
    "dst_region": 1,
    "src_region": 1,
    "dst_y": "925",
    "source": "usmsc2-bb-cr1",
    "src_x": "1000",
    "src_y": "1080",
    "out_bw_used": "0"
  }
}, {
  "_index": "map_link_info",
  "_type": "config",
  "_id": "usmsc2-bb-cr1et-1/0/3usmsc2-bb-pe3",
  "_score": 1,
  "_source": {
    "in_bw_used": "0",
    "bundle_intf": "Unknown",
    "dst_x": "1420",
    "dest": "usmsc2-bb-pe3",
    "dst_region": 1,
    "src_region": 1,
    "dst_y": "975",
    "source": "usmsc2-bb-cr1",
    "src_x": "1000",
    "src_y": "1080",
    "out_bw_used": "0"
  }
}, {
  "_index": "map_link_info",
  "_type": "config",
  "_id": "usmsc2-bb-cr1et-0/0/3usmsc2-bb-pe1",
  "_score": 1,
  "_source": {
    "in_bw_used": "0",
    "bundle_intf": "Unknown",
    "dst_x": "1150",
    "dest": "usmsc2-bb-pe1",
    "dst_region": 1,
    "src_region": 1,
    "dst_y": "1925",
    "source": "usmsc2-bb-cr1",
    "src_x": "1000",
    "src_y": "1080",
    "out_bw_used": "0"
  }
}];

function addToArray(val1, val2) {
  return _.isArray(val1) ? val1.concat(val2) : [val1].concat(val2);
}

function modifyObjs(a, b) {
  b._source.in_bw_used = addToArray(b._source.in_bw_used, a._source.in_bw_used);
  b._source.out_bw_used = addToArray(b._source.out_bw_used, a._source.out_bw_used);
  return true;
}

function predicateAndModifier(a, b) {
  return a._source.dest === b._source.dest && a._source.src === b._source.src && a._source.src_x === b._source.src_x && a._source.src_y === b._source.src_y && a._source.dst_x === b._source.dst_x && a._source.dst_y === b._source.dst_y && modifyObjs(a, b);
}

console.log(_.uniqWith(arr, predicateAndModifier));

//console.log(_.uniqWith(objects, _.isEqual));