Vuejs Как назначить объект массива?

#javascript #vue.js #foreach #arrayobject

Вопрос:

У меня есть ответ, как показано ниже, от вызова API,

 {
    "1-2021": [
        {
            "id": 1,
            "status": "New",
            "player_count": 7
        },
        {
            "id": 2,
            "status": "Verified",
            "player_count": 4
        },
        {
            "id": 3,
            "status": "Regitered ID",
            "player_count": 18
        },
        {
            "id": 4,
            "status": "On Playing",
            "player_count": 15
        },
        {
            "id": 5,
            "status": "Finished",
            "player_count": 9
        },
        {
            "id": 6,
            "status": "Active",
            "player_count": 10
        },
        {
            "id": 7,
            "status": "Inactive",
            "player_count": 0
        }
    ],
    "2-2021": [
        {
            "id": 1,
            "status": "New",
            "player_count": 3
        },
        {
            "id": 2,
            "status": "Verified",
            "player_count": 8
        },
        {
            "id": 3,
            "status": "Regitered ID",
            "player_count": 17
        },
        {
            "id": 4,
            "status": "On Playing",
            "player_count": 11
        },
        {
            "id": 5,
            "status": "Finished",
            "player_count": 7
        },
        {
            "id": 6,
            "status": "Active",
            "player_count": 6
        },
        {
            "id": 7,
            "status": "Inactive",
            "player_count": 0
        }
    ]
}
 

Затем я должен повторить все массивы внутри массивов. Как мне это сделать в VueJS?

Я искал использование forEach.. нигде, где я нашел использование для каждого.

Может ли кто-нибудь помочь мне в том, как извлекать значения из этих массивов с помощью forEach или любого другого(VueJS)?

Я ожидал такого исхода:

 chartData: [
        ['Month', 'New', 'Verified', 'Regitered ID', 'On Playing', 'Finished', 'Active', 'Inactive'],
        ['January', 7, 4, 18, 15, 9, 10, 0],
        ['February', 16, 22, 23, 30, 16, 9, 8]
      ]
 

спасибо и с уважением,

Комментарии:

1. Ваша проблема имеет мало общего с VueJS и во многом связана с обработкой данных в JS. Я бы рекомендовал заглянуть в учебник, касающийся этой темы, например eloquentjavascript.net/04_data.html

2. является ли первая строка chartData фиксированной ? Я имею в виду, всегда ли это одни и те же поля ?

Ответ №1:

Попробуй это

 let a = {
  "1-2021": [{
      "id": 1,
      "status": "New",
      "player_count": 7
    },
    {
      "id": 2,
      "status": "Verified",
      "player_count": 4
    },
    {
      "id": 3,
      "status": "Regitered ID",
      "player_count": 18
    },
    {
      "id": 4,
      "status": "On Playing",
      "player_count": 15
    },
    {
      "id": 5,
      "status": "Finished",
      "player_count": 9
    },
    {
      "id": 6,
      "status": "Active",
      "player_count": 10
    },
    {
      "id": 7,
      "status": "Inactive",
      "player_count": 0
    }
  ],
  "2-2021": [{
      "id": 1,
      "status": "New",
      "player_count": 3
    },
    {
      "id": 2,
      "status": "Verified",
      "player_count": 8
    },
    {
      "id": 3,
      "status": "Regitered ID",
      "player_count": 17
    },
    {
      "id": 4,
      "status": "On Playing",
      "player_count": 11
    },
    {
      "id": 5,
      "status": "Finished",
      "player_count": 7
    },
    {
      "id": 6,
      "status": "Active",
      "player_count": 6
    },
    {
      "id": 7,
      "status": "Inactive",
      "player_count": 0
    }
  ]
};

let ar = [];
let b = Object.keys(a).forEach((e, index) => {



  if (index == 0) {

    let b = a[e].map(r => r.status)

    b.unshift("Month")
    ar.push(b)
  }
  let a1 = [e]

  a[e].forEach(c => {



    a1.push(c.player_count)
    c.status

  })
  ar.push(a1)

})

console.log(ar) 

Комментарии:

1. Я добавил фрагмент к вашему ответу, чтобы мы могли запустить код и проверить его

2. @VivekVs Спасибо за помощь, все сработало идеально.

3. @VivekVs как изменить значение «1-2021» на «Январь» ?

4. пусть a=»1-2021″; пусть d2=новая дата(a.сплит(‘-‘)[1],a.сплит(‘-‘)[0]-1,1).toLocaleString(«по умолчанию», { месяц: «длинный» }); console.log(d2)