we need to check the masterId at each level in both the object
if its equal at each level than we need to check for ref,
if ref is equal than add the quantity of both unique ref.
let obj1 = {
"obj": [
{
"name": "abc",
"obj": [
{
"name": "def",
"obj": [
{
"name": "ghi",
"data": [
{
"quantity": 1,
"ref": "ABCEFG"
},
{
"quantity": 1,
"ref": "HIJKLM"
},
{
"quantity": 1,
"ref": "ABCDEF"
}
],
"masterId": "07a5b470"
}
],
"masterId": "07a5b470"
}
],
"masterId": "07a5b470"
}
]
}
let obj2 = {
"obj": [
{
"name": "abc",
"obj": [
{
"name": "def",
"obj": [
{
"name": "ghi",
"data": [
{
"quantity": 1,
"ref": "ABCEFG"
},
{
"quantity": 1,
"ref": "HIJKLM"
},
{
"quantity": 1,
"ref": "XYZ123"
}
],
"masterId": "07a5b470"
}
],
"masterId": "07a5b470"
}
],
"masterId": "07a5b470"
}
]
}
Expected Output:
{
"obj": [
{
"name": "abc",
"obj": [
{
"name": "def",
"obj": [
{
"name": "ghi",
"data": [
{
"quantity": 2,
"ref": "ABCEFG"
},
{
"quantity": 2,
"ref": "HIJKLM"
},
{
"quantity": 1,
"ref": "ABCDEF"
},
{
"quantity": 1,
"ref": "XYZ123"
}
],
"masterId": "07a5b470"
}
],
"masterId": "07a5b470"
}
],
"masterId": "07a5b470"
}
]
}