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
1042

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 ?

怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(7)
黄舟
arr.reduce((r,v)=>r[v.date.split('/')[1]-1].push(v)&&r,new Array(12).fill(0).map(_=>[]))

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.

学霸

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

Ty80

Votre question porte principalement sur la façon de diviser en 12 groupes. Je vous propose deux idées simples

.
  1. Convertir la date en objet date et regrouper par mois

  2. Utilisez des règles régulières pour obtenir des dates correspondantes et les regrouper

迷茫

D'après l'analyse du JSONformat que vous avez donné :

  • Tableau périphérique 1-12, représentant 12 mois

  • Parcourez à nouveau le tableau et obtenez object,取objectdata值,按照/分割得到月,根据月份把objectrempli dans le mois correspondant

  • Obtenez 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.

巴扎黑
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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal