javascript - Bagaimana untuk memotong objek tatasusunan dengan panjang 365 kepada 12 kumpulan mengikut bulan?
怪我咯
怪我咯 2017-07-05 10:36:42
0
7
1035

Gambar yang ditunjukkan ialah fail json yang menyimpan data AQI untuk sepanjang tahun 2014. Sekarang saya ingin mengira purata AQI bulanan Bagaimana saya perlu memproses tatasusunan ini?

怪我咯
怪我咯

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

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

Hasil pulangan ini boleh mengembalikan tatasusunan baharu yang mengandungi 12 tatasusunan, setiap subtatasusunan mengandungi data AQI bulan semasa

Saya baru mengetahui bahawa tujuan utama poster adalah untuk mencari purata AQI setiap bulan, jadi anda boleh melakukan ini:

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+'月'}
})    

Hasil ini mengembalikan tatasusunan yang mengandungi 12 elemen dalam bentuk {month:'1月',beijing:12,shanghai:24,guangzhou:36}, dan nilai di dalamnya ialah nilai purata setiap bulan.

学霸

Kumpulkan mengikut di latar belakang, gunakan purata()

三叔

Rasanya anda tidak perlu memproses data, yang hanya akan terus menggunakan memori Anda hanya perlu mengetahui titik permulaan dan titik akhir setiap bulan, dan hanya menggunakan titik permulaan dan titik akhir untuk mendapatkan tatasusunan. untuk pengiraan
Sebab sebenarnya, data Semuanya ada di sini, cuma peraturan cara anda menggunakan data adalah berbeza

Ty80

Soalan anda terutamanya tentang cara membahagikan kepada 12 kumpulan Saya menyediakan dua idea mudah

  1. Tukar tarikh kepada objek tarikh dan kumpulan mengikut bulan

  2. Gunakan peraturan biasa untuk mendapatkan tarikh yang sepadan untuk mengumpulkannya

迷茫

Dari analisis JSONformat yang anda berikan:

  • Tatasusunan persisian 1-12, mewakili 12 bulan

  • Lintas tatasusunan sekali lagi dan dapatkan object,取objectdata值,按照/分割得到月,根据月份把objectdiisi ke dalam bulan yang sepadan

  • Dapatkan data yang sepadan untuk setiap bulan dan proseskannya secara bulanan

滿天的星座

Biarkan bahagian belakang memproses pengumpulan data, dan bahagian hadapan bertanggungjawab untuk menggunakannya.

巴扎黑
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);

Kod di atas menjumlahkan data setiap bulan Ia sepatutnya mudah ke purata, kod di atas mempunyai keperluan untuk data json, iaitu semua data mesti dikelaskan mengikut bulan

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan