I have 2 arrays of 20 objects that I want to merge by name. The order of the names in each array is different, and the order is important and has to be left as is. This prevents me from a traditional sort and for
loop approach. Basically, what I have is:
var tempList1 = [
{'manager':'John', 'x1':0, 'y1':0, 'x2':1, 'y2':1},
{'manager':'Tom', 'x1':0, 'y1':50, 'x2':1, 'y2':1},
{'manager':'Julie', 'x1':0, 'y1':80, 'x2':1, 'y2':1},
...
];
var tempList2 = [
{'manager':'Tom', 'x3':0, 'y3':10, 'x4':1, 'y4':1},
{'manager':'Julie', 'x3':0, 'y3':90, 'x4':1, 'y4':1},
{'manager':'John', 'x3':0, 'y3':50, 'x4':1, 'y4':1},
...
];
Notice that John
is at index 0
in tempList1
but is at index 2
at tempList2
. When I tried:
for (var k = 0; k < managerList.length; k++) {
let merged = {...tempList1[k],...tempList2[k]}
combinedList.push(merged);
}
I was making the mistake of assuming the order was the same in each array -- when its not.
End result should be:
var combinedList = [
{'manager':'John', 'x1':0, 'y1':0, 'x2':1, 'y2':1, 'x3':0, 'y3':50, 'x4':1, 'y4':1},
{'manager':'Tom', 'x1':0, 'y1':50, 'x2':1, 'y2':1, 'x3':0, 'y3':10, 'x4':1, 'y4':1},
{'manager':'Julie', 'x1':0, 'y1':80, 'x2':1, 'y2':1, 'x3':0, 'y3':90, 'x4':1, 'y4':1}
];
Question
How can I merge objects so that only objects when the same manager
value are merged with each other in my array?