javascript – De un JSON Array crear un nuevo JSON a partir de la unión de una propiedad en un array

Tengo un JSON con un formato parecido a este:

({
  "email": "correo@correo.com",
  "school_id": 1,
  "school": "Escuela 1"
}, {
  "email": "rola@email.com",
  "school_id": 1
  "school": "Escuela 1"
}, {
  "email": "pola@email.com",
  "school_id": 1
  "school": "Escuela 1"
}, {
  "email": "correo@correo.com",
  "school_id": 2,
  "school": "Escuela 2"
});

Y quisiera crear un Nuevo JSON que junte las propiedades school_id y school en una nueva propiedad llamada schools la cual sería un arreglo de ({school_id: number, school: string})

Me gustaría para ello hacer uso de la programación funcional, sin embargo, no encuentro aún la manera correcta de lograr esto:

({
    "email": "correo@correo.com",
    "schools": ({
        "school_id": 1,
        "school": "Escuela 1"
      } {
        "school_id": 2,
        "school": "Escuela 2"
      }
    },
    {
      "email": "rola@email.com",
      "schools": ({
        "school_id": 1,
        "school": "Escuela 1"
      })
    },
    {
      "email": "pola@email.com",
      "schools": ({
        "school_id": 1,
        "school": "Escuela 1"
      })
});

Hasta el momento he intentado esto:

let results = ({
  "email": "correo@correo.com",
  "school_id": 1,
  "school": "Escuela 1"
}, {
  "email": "rola@email.com",
  "school_id": 1,
  "school": "Escuela 1"
}, {
  "email": "pola@email.com",
  "school_id": 1,
  "school": "Escuela 1"
}, {
  "email": "correo@correo.com",
  "school_id": 2,
  "school": "Escuela 2"
});

results.forEach((result, idx) => {
  if (results.findIndex(el => el.email === result.email) > idx) {
    result.schools.push(results.filter((el, index) => el.email === result.email && index > idx));
    delete result.schools.email;
    delete result.school_id;
  } else {
    result.schools = ({
      school_id: result.school_id,
      school: result.school
    })
    delete result.school_id;
    delete result.school;
  }
});
console.log(results);
console.log(JSON.stringify(results));