Попробуйте что-то вроде этого:
Array.prototype.max = function(){
return Math.max.apply(null, this);
};
Array.prototype.min = function(){
return Math.min.apply(null, this);
};
function onlyUnique(value, index, self){
return self.indexOf(value) === index;
}
var a1 = [1,2,3,5,7,9,1],
a2 = [1,2,3,4,6,8,10];
min = [
a1.min(), a2.min()
].min(),
max = [
a1.max(), a2.max()
].max(),
res = [],
arr = a1.concat(a2).filter(onlyUnique).sort((i1,i2) => i1-i2)
for(var i=0; i<arr.length; i++){
var n = arr[i]
res.push({key: n, value: {
left: a1.includes(n) ? n : '-',
right: a2.includes(n) ? n : '-'
}})
}
console.log(res);