const sourceObject = {
  a: 1,
  b: 2,
  c: 3,
  d: 4,
  e: 5,
}

const groundInfo : {
  aGroup: ['a', 'b'],
  bGroup: ['c', 'd', 'e'],
};

function makeGroup(source, info) {
  const merge = (prev, curr) => ({ ...prev, ...curr });

  return Object.keys(info)
    .map(infoKey => ({ [infoKey]: info[infoKey]
      .map(val => ({ [val]: source[val] }))
      .reduce(merge, {})
    }))
    .reduce(merge, {});
}

const result = makeGroup(sourceObject, groundInfo);
console.log(result);