javascript - Comment découper un objet tableau d'une longueur de 365 en 12 groupes par mois?
怪我咯2017-07-05 10:36:42
0
7
1024
L'image présentée est un fichier json qui stocke les données AQI pour toute l'année 2014. Je souhaite maintenant calculer l'AQI moyen mensuel. Comment dois-je traiter ce tableau ?
Ce résultat de retour peut renvoyer un nouveau tableau contenant 12 tableaux, chaque sous-tableau contient les données AQI du mois en cours
Je viens de découvrir que le but principal de l'affiche est de trouver l'IQA moyen chaque mois, vous pouvez donc faire ceci :
arr.reduce((r,v)=>r[v.date.split('/')[1]-1].push(v)&&r,new Array(12).fill(0).map(_=>[]))
.map((i,k)=>{
let r = i.reduce((r,v)=>{for(let j in r)r[j]+=(+v[j]);return r},{beijing:0,shanghai:0,guangzhou:0});
for(let j in r) r[j] = parseInt(r[j]/i.length);
return {...r,month:k+1+'月'}
})
Ce résultat renvoie un tableau contenant 12 éléments en forme de {month:'1月',beijing:12,shanghai:24,guangzhou:36}, et la valeur à l'intérieur est la valeur moyenne de chaque mois.
Vous avez l'impression que vous n'avez pas besoin de traiter les données, ce qui ne fera que continuer à consommer de la mémoire. Il vous suffit de connaître le point de départ et le point de fin de chaque mois, et d'utiliser simplement le point de départ et le point de fin pour obtenir le tableau. pour le calcul. Parce qu'en fait, les données Tout est là, c'est juste que les règles d'utilisation des données sont différentes
var jsonData = [{
'date': '2014/1/1',
'beijing': 80,
'shanghai': 123,
'guangzhou': 99
},{
'date': '2014/1/2',
'beijing': 80,
'shanghai': 123,
'guangzhou': 99
},{
'date': '2014/2/1',
'beijing': 80,
'shanghai': 123,
'guangzhou': 99
}];// 保存的json数据
var arr = [{'date': '1', 'b': 0, 's': 0, 'g': 0}];
var k = 0;
for(var i = 0; i < jsonData.length; i++) {
var item = jsonData[i];
var dateArr = item.date.split('/');
if (dateArr[1] == arr[k].date) {
arr[k].b += item.beijing;
arr[k].s += item.shanghai;
arr[k].g += item.guangzhou;
} else {
var param = {
'date': dateArr[1],
'b': 0,
's': 0,
'g': 0
};
k++;
arr.push(param);
}
}
console.log(arr);
Le code ci-dessus résume les données de chaque mois. Il devrait être simple de faire la moyenne. Cependant, le code ci-dessus a une exigence pour les données json, c'est-à-dire que toutes les données doivent être classées en fonction du mois.
Ce résultat de retour peut renvoyer un nouveau tableau contenant 12 tableaux, chaque sous-tableau contient les données AQI du mois en cours
Je viens de découvrir que le but principal de l'affiche est de trouver l'IQA moyen chaque mois, vous pouvez donc faire ceci :
Ce résultat renvoie un tableau contenant 12 éléments en forme de
{month:'1月',beijing:12,shanghai:24,guangzhou:36}
, et la valeur à l'intérieur est la valeur moyenne de chaque mois.Regroupez par en arrière-plan, utilisez avg()
Vous avez l'impression que vous n'avez pas besoin de traiter les données, ce qui ne fera que continuer à consommer de la mémoire. Il vous suffit de connaître le point de départ et le point de fin de chaque mois, et d'utiliser simplement le point de départ et le point de fin pour obtenir le tableau. pour le calcul.
Parce qu'en fait, les données Tout est là, c'est juste que les règles d'utilisation des données sont différentes
Votre question porte principalement sur la façon de diviser en 12 groupes. Je vous propose deux idées simples
.Convertir la date en objet date et regrouper par mois
Utilisez des règles régulières pour obtenir des dates correspondantes et les regrouper
D'après l'analyse du
JSON
format que vous avez donné :Tableau périphérique 1-12, représentant 12 mois
Parcourez à nouveau le tableau et obtenez
object
,取object
的data
值,按照/
分割得到月,根据月份把object
rempli dans le mois correspondantObtenez les données correspondantes pour chaque mois et traitez-les sur une base mensuelle
Laissez le back-end traiter le regroupement des données, et le front-end est responsable de son utilisation.
Le code ci-dessus résume les données de chaque mois. Il devrait être simple de faire la moyenne. Cependant, le code ci-dessus a une exigence pour les données json, c'est-à-dire que toutes les données doivent être classées en fonction du mois.