I have n objects(with some nested structure). In the end, I'm expecting to get one merged object with all fields.
const result = {
firstParam: {
x: {
id1: ["somedata1", "somedata2"],
id3: ["somedata1", "somedata2"],
},
y: {
id1: ["somedata1", "somedata2"],
id3: ["somedata1", "somedata2"],
},
z: {
id1: ["somedata1", "somedata2"],
id3: ["somedata1", "somedata2"],
}
},
secondParam: {
x: {
id1: ["somedata1", "somedata2"],
id3: ["somedata1", "somedata2"],
},
y: {
id1: ["somedata1", "somedata2"],
id3: ["somedata1", "somedata2"],
},
z: {
id1: ["somedata1", "somedata2"],
id3: ["somedata1", "somedata2"],
}
},
thirdParam: {
x: {
id1: ["somedata1", "somedata2"],
id3: ["somedata1", "somedata2"],
},
y: {
uuid1: ["somedata1", "somedata2"],
id3: ["somedata1", "somedata2"],
},
z: {
id1: ["somedata1", "somedata2"],
id3: ["somedata1", "somedata2"],
}
}
}
const newObj1 = {
firstParam: {
x: {
id2: ["somedata1", "somedata2"]
},
y: {
id2: ["somedata1", "somedata2"]
},
z: {
id2: ["somedata1", "somedata2"]
}
},
secondParam: {
x: {
id2: ["somedata1", "somedata2"]
},
y: {
id2: ["somedata1", "somedata2"]
},
z: {
id2: ["somedata1", "somedata2"]
}
},
thirdParam: {
x: {
id2: ["somedata1", "somedata2"]
},
y: {
id2: ["somedata1", "somedata2"]
},
z: {
id2: ["somedata1", "somedata2"]
}
}
}
const merge = (result, newObj) => {
console.time("test merge")
Object.keys(result).forEach(key => {
result[key] = {
x: {
...result[key].x,
...newObj[key].x
},
y: {
...result[key].y,
...newObj[key].y
},
z: {
...result[key].z,
...newObj[key].z
}
}
})
console.timeEnd("test merge")
return result;
}
merge(result, newObj1);
This solution gives me an expected result(I'm getting an obj2
, obj3
... objn
and every iteration I'm merging it to result), but when I'm getting more than 500 or 1000 newObj
it works pretty slow. Is there any way to optimize it?