madrogalo
@madrogalo
Кратко о себе

Как отформатировать массив объектов?

есть массив обектов
[
  {
    title: 'Tiger',
    weight: '90',
    category: {
      id: '333',
      name: 'heavy tank'
    }
  },  
  {
    title: 'Amx 50b',
    weight: '80',
    category: {
      id: '333',
      name: 'heavy tank'
    }
  },  
  {
    title: 'mt-25',
    weight: '25',
    category: {
      id: '444',
      name: 'light tank'
    }
  },  
  {
    title: 'Vickers Light 105',
    weight: '30',
    category: {
      id: '444',
      name: 'light tank'
    }
  }
]


на выходе нужно получить что-то типа такого
[
  { 
    category: {
      id: '444',
      name: 'light tank',
      tanks: [
        {
          title: 'Vickers Light 105',
          weight: '30',
        },
        {
         title: 'mt-25',
         weight: '25',
        }
      ]
    }
  },
  {
    category: {
      id: '333',
      name: 'heavy tank',
      tanks: [
        {
          title: 'Tiger',
          weight: '90'
        },        
        {
          title: 'Amx 50b',
          weight: '80',
        }
      ]
    }
  }
]
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Object.values(arr.reduce((acc, { category, ...n }) => (
  (acc[category.id] ??= { ...category, tanks: [] }).tanks.push(n),
  acc
), {}))
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы