@rshruslan

Как построить список на основе сгруппированных и уникализированных данных?

Есть массив:

let array = [
  {
    category: 'Animals',
    type: 'something'
  },
  {
    category:'Animals',
    type: 'some'
  },
  {
    category: 'Animals',
    type: 'something'
  },
  {
    category: 'Human',
    type: 'some'
  },
  {
    category: 'Human',
    type: 'some2'
  },
  {
    category: 'Human',
    type: 'some2'
  }
]

Из него надо получить следующее:

Animals
--something
--some
Human
--some
--some2
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const grouped = arr.reduce((acc, n) => {
  (acc[n.category] = acc[n.category] || []).push(n.type);
  return acc;
}, {});

const html = `
  <ul>${Object.entries(grouped).map(([ k, v ]) => `
    <li>
      ${k}
      <ul>${[...new Set(v)].map(n => `
        <li>${n}</li>`).join('')}
      </ul>
    </li>`).join('')}
  </ul>`;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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