Ваш подход с использованием метода `reduce` - это отличная идея для этой задачи. Давайте завершим ваш код, чтобы он правильно группировал значения в объекте. Вот как это можно сделать:
```javascript
const array = ['part1-item1', 'part1-item2', 'part2-item1', 'part3-item1'];
const groupedObject = array.reduce((acc, rec) => {
const [key, value] = rec.split('-');
// Проверяем, существует ли ключ в объекте
if (!acc[key]) {
// Если нет, создаем ключ и инициализируем его массивом с текущим значением
acc[key] = [value];
} else {
// Если существует, просто добавляем новое значение в существующий массив
acc[key].push(value);
}
return acc; // Возвращаем аккумулятор для следующей итерации
}, {});
console.log(groupedObject);
```
### Как это работает:
1. Метод `reduce` инициализируется с пустым объектом `{}` в качестве аккумулятора `acc`.
2. Каждая строка из массива разбивается на две части с помощью `split('-')`: первая часть становится ключом (`key`), а вторая - значением (`value`).
3. Если объект `acc` не содержит текущий ключ (`key`), создаем этот ключ и инициализируем его массивом, который содержит текущий элемент (`value`).
4. Если ключ уже существует, просто добавляем новое значение в уже существующий массив с помощью метода `push`.
5. В конце `reduce` возвращает объект с нужным форматом.
### Результат:
После выполнения кода у вас получится объект следующего вида:
```javascript
{
part1: ['item1', 'item2'],
part2: ['item1'],
part3: ['item1']
}
```
Такой подход позволяет элегантно группировать значения и минимизирует количество условных проверок.