const getNestedProp = (data, key) => Object
.entries(data instanceof Object ? data : {})
.reduce((acc, [ k, v ]) => (
(k === key) && acc.push(v),
acc.push(...getNestedProp(v, key)),
acc
), []);
const ids = getNestedProp(data.flatMap(n => n.children), 'id');
Или, более специализированный вариант (для данных указанной структуры, а не произвольных):
const getIds = arr =>
(Array.isArray(arr) ? arr : []).reduce((acc, n) => (
acc.push(n.id, ...getIds(n.children)),
acc
), []);
const ids = getIds(data.flatMap(n => n.children));