Вложенное дерево — как достать все id?
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 = getNestedProp(data.flatMap(n => n.children));
почитай про рекурсивный вызов функций