I have an array of objects, that looks like this:
data = [
  {
    title: 'John Doe',
    departments: [
      { name: 'Marketing', slug: 'marketing'},
      { name: 'Sales', slug: 'sales'},
      { name: 'Administration', slug: 'administration'},
    ]
  },
  {
    title: 'John Doe Junior',
    departments: [
      { name: 'Operations', slug: 'operations'},
      { name: 'Sales', slug: 'sales'},
    ]
  },
  {
    title: 'Rick Stone',
    departments: [
      { name: 'Operations', slug: 'operations'},
      { name: 'Marketing', slug: 'marketin'},
    ]
  },
]
How can I iterate over each object's departments array and create new arrays where I would have employees sorted by departments, so that the end result would like this:
operations = [
  {
    title: 'John Doe Junior',
    departments: [
      { name: 'Operations', slug: 'operations'},
      { name: 'Sales', slug: 'sales'},
    ]
  },
  {
    title: 'Rick Stone',
    departments: [
      { name: 'Operations', slug: 'operations'},
      { name: 'Marketing', slug: 'marketin'},
    ]
  },
]
marketing = [
  {
    title: 'John Doe',
    departments: [
      { name: 'Marketing', slug: 'marketing'},
      { name: 'Sales', slug: 'sales'},
      { name: 'Administration', slug: 'administration'},
    ]
  },
  {
    title: 'Rick Stone',
    departments: [
      { name: 'Operations', slug: 'operations'},
      { name: 'Marketing', slug: 'marketin'},
    ]
  },
]
What would be the way to create dynamically this kind of arrays?
Update
I have tried to come up with a solution using the suggestion from the answer, where I would dynamically create an array with department objects that would have an array of employees:
const isInDepartment = departmentToCheck => employer => employer.departments.find(department => department.slug == departmentToCheck);
var departments = [];
function check(departments, name) {
  return departments.some(object => name === object.department);
}
employees.forEach((employee) => {
    employee.departments.forEach((department) => {
        let found = check(departments, department.slug);
        if (!found) { 
            departments.push({ department: department.slug }); 
        }
        });
});
departments.forEach((department) => {
    // push an array of employees to each department
    //employees.filter(isInDepartment(department));
});
But, I don't know how can I push the array of employees to the object in the array that I am looping at the end? This is the fiddle.
 
    