@1233211

Как преобразовать данные из такого объекта в такой?

Есть объект такого вида
{
  answers: [{id: 1, title: 'answer1'}, {id: 2, title: 'answer2'}, {id: 3, title: 'answer3'}],
  votes: [{100: [2]}, {101: [1, 2]}, {103: [3]}, {104: [2]}],
  title: 'question',
}


Как из него получить такой?
{
  labels: ['answer1', 'answer2', 'answer3'],
  datasets: [
    {
      label: 'question',
      data: [1, 3, 1]
    }
  ]
}


data: [1, 3, 1] - это кол-во голосов, отданных за ответ, берётся из votes,
votes: [{100: [2]}, {101: [1, 2]}, {103: [3]}, {104: [2]}] - в объектах хранятся id users (нам тут не надо ничего с ними делать) и массив с id вопроса из answers

labels[0] - это ответ с id 1, за него проголосовал 1 человек, значит в data[0] будет 1 и так далее.
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
{
  labels: obj.answers.map(n => n.title),
  datasets: [
    {
      label: obj.title,
      data: obj.votes.reduce((acc, n) => {
        Object.values(n)[0].forEach(m => acc[m - 1] = (acc[m - 1] || 0) + 1);
        return acc;
      }, []),
    },
  ],
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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