#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)