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));