Для того чтобы отсортировать массив объектов по определенному критерию в JavaScript, можно использовать метод `sort()` в сочетании с функцией сравнения. Например, если вам нужно отсортировать массив объектов по полю `role`, вы можете сделать это следующим образом:
```js
const arr = [
{name: 'Alice', role: 'developer'},
{name: 'Bob', role: 'designer'},
{name: 'Charlie', role: 'developer'},
{name: 'Dave', role: 'manager'}
];
arr.sort((a, b) => a.role.localeCompare(b.role));
console.log(arr);
```
Для того чтобы разделить массив объектов по их ролям на отдельные массивы, можно воспользоваться методом `reduce()`, чтобы создать объект, где ключами будут роли, а значениями - массивы объектов с соответствующими ролями. Например:
```js
const arr = [
{name: 'Alice', role: 'developer'},
{name: 'Bob', role: 'designer'},
{name: 'Charlie', role: 'developer'},
{name: 'Dave', role: 'manager'},
{name: 'Eve', role: 'developer'}
];
const groupedByRole = arr.reduce((acc, obj) => {
if (!acc[obj.role]) {
acc[obj.role] = [];
}
acc[obj.role].push(obj);
return acc;
}, {});
console.log(groupedByRole);
```
Это создаст объект `groupedByRole`, где ключами будут роли, а значениями - массивы объектов с соответствующими ролями. Если вам всё же нужно, чтобы каждая роль была представлена отдельным массивом (а не объектом), вы можете использовать `Object.values()` для получения массива значений из этого объекта:
```js
const arrayOfArrays = Object.values(groupedByRole);
console.log(arrayOfArrays);
```