#angular
#angular
Вопрос:
Мне нужно передать значения в диаграммах детализации, мой формат JSON работает неправильно, поэтому, пожалуйста, помогите мне с этим.
this.MemberProvider.totalMonthlyRevenueByBranch(getmonthmonthwisr)
.subscribe(data => {
this.graphdata =data;
console.log(this.graphdata);
})
Мой формат JSON выглядит следующим образом,
[
{
"_id":{
"year":2018
},
"data":[
{
"year":2018,
"total":10260,
"month":"Mar"
}
],
"overall":10260
},
{
"_id":{
"year":2019
},
"data":[
{
"year":2019,
"total":14160,
"month":"Dec"
},
{
"year":2019,
"total":14160,
"month":"Nov"
},
{
"year":2019,
"total":14259,
"month":"Oct"
},
{
"year":2019,
"total":14160,
"month":"Sep"
},
{
"year":2019,
"total":14259,
"month":"Aug"
},
{
"year":2019,
"total":14160,
"month":"July"
},
{
"year":2019,
"total":28518,
"month":"Jun"
},
{
"year":2019,
"total":14259,
"month":"May"
},
{
"year":2019,
"total":185185,
"month":"Apr"
},
{
"year":2019,
"total":54739,
"month":"Mar"
},
{
"year":2019,
"total":28518,
"month":"Feb"
},
{
"year":2019,
"total":28518,
"month":"Jan"
}
],
"overall":424895
}
]
Как получить такую структуру JSON
[
{
"year": "2018",
"Mar": 10260,
"overall": 10260
},
{
"year": "2019",
"Jan": 28518,
"Feb": 28518,
"Mar": 54739,
"Apr": 185185,
"May": 14259,
"Jun": 28518,
"July": 14160,
"Aug": 14259,
"Sep": 14160,
"Oct": 14259
"Nov": 14160
"Dec": 14160
"overall": 424895
}
];
Комментарии:
1. что вы пробовали до сих пор? не могли бы вы предоставить нам свои текущие попытки
2. Подсказка: Lodash
groupby
,map
3. Я новичок в angular bro, просто я попал в api, и я получаю aboveresponse, и мне нужно структурировать его в соответствии со структурой JSON, которую я предоставил. заранее спасибо.
Ответ №1:
Это то, что я придумал очень быстро. Оптимизация этого кода зависит от вас. Вероятно, вы могли бы использовать a for-loop
вместо map
. Полностью зависит от вас
var data = [
{
"_id":{
"year":2018
},
"data":[
{
"year":2018,
"total":10260,
"month":"Mar"
}
],
"overall":10260
},
{
"_id":{
"year":2019
},
"data":[
{
"year":2019,
"total":14160,
"month":"Dec"
},
{
"year":2019,
"total":14160,
"month":"Nov"
},
{
"year":2019,
"total":14259,
"month":"Oct"
},
{
"year":2019,
"total":14160,
"month":"Sep"
},
{
"year":2019,
"total":14259,
"month":"Aug"
},
{
"year":2019,
"total":14160,
"month":"July"
},
{
"year":2019,
"total":28518,
"month":"Jun"
},
{
"year":2019,
"total":14259,
"month":"May"
},
{
"year":2019,
"total":185185,
"month":"Apr"
},
{
"year":2019,
"total":54739,
"month":"Mar"
},
{
"year":2019,
"total":28518,
"month":"Feb"
},
{
"year":2019,
"total":28518,
"month":"Jan"
}
],
"overall":424895
}
];
var res = [];
data.map((item, index) => {
const overall = item.overall;
item.data.map(i => {
res[index] = Object.assign(res[index] || {}, {[i.month]: i.total});
});
res[index] = Object.assign(res[index], {
overall, year: item._id.year
});
return res;
});
document.body.innerHTML = '<pre>' JSON.stringify(res, null, ' ') '</pre>';
Комментарии:
1. Примечание: НЕ копируйте код напрямую. Поймите это, а затем напишите сами.
2. Конечно, брат, я сделаю это позже.