Ваш формат данных неправильный, я думаю, завернутый первый объект в свойство дал мне желаемый результат
var sourceObj = {
"till-11.1": {
_id: "domains/8999693",
_key: "8999693",
_rev: "_YFjlOei--_",
acn: "01 0001 0001",
activated: false,
id: "till",
name: "Till Payments",
timestamp: 1549838701,
sub_domains: ["till-l2.1", "till-l2.2"],
parent_domain: null,
subDomainData: {
"till-l2.1": {
_id: "domains/8999741",
_key: "8999741",
_rev: "_YFgLFKW--_",
acn: "02 0002 0002",
activated: false,
id: "till-l2.1",
name: "Till l2-1",
timestamp: 1549597441,
sub_domains: ["till-l3.1"],
parent_domain: "till",
subDomainData: {
"till-l3.1": {
_id: "domains/9001753",
_key: "9001753",
_rev: "_YFghVqi--_",
acn: "",
activated: true,
id: "till-l3.1",
name: "till l3.1",
timestamp: 1549598900,
sub_domains: [],
parent_domain: "till-l2.1",
subDomainData: {},
accessDomains: []
}
},
accessDomains: ["till-l3.1"]
},
"till-l2.2": {
_id: "domains/8999780",
_key: "8999780",
_rev: "_YFgLcri--_",
acn: "02 0002 0002",
activated: false,
id: "till-l2.2",
name: "Till l2-2",
timestamp: 1549597465,
sub_domains: [],
parent_domain: "till",
subDomainData: {},
accessDomains: []
}
},
accessDomains: ["till-l2.1", "till-l2.2", "till-l3.1"]
}
};
var result = [];
const checkSubDomainData = obj => {
Object.keys(obj).forEach(key => {
if (obj[key].subDomainData !== {}) {
let innerObjs = obj[key].subDomainData;
delete obj[key].subDomainData;
result.push(obj[key]);
checkSubDomainData(innerObjs);
} else {
return;
}
});
};
checkSubDomainData(sourceObj);
console.log(result);