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?
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.
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
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
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:
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
Soalan anda terutamanya tentang cara membahagikan kepada 12 kumpulan Saya menyediakan dua idea mudah
Tukar tarikh kepada objek tarikh dan kumpulan mengikut bulan
Gunakan peraturan biasa untuk mendapatkan tarikh yang sepadan untuk mengumpulkannya
Dari analisis
JSON
format yang anda berikan:Tatasusunan persisian 1-12, mewakili 12 bulan
Lintas tatasusunan sekali lagi dan dapatkan
object
,取object
的data
值,按照/
分割得到月,根据月份把object
diisi ke dalam bulan yang sepadanDapatkan data yang sepadan untuk setiap bulan dan proseskannya secara bulanan
Biarkan bahagian belakang memproses pengumpulan data, dan bahagian hadapan bertanggungjawab untuk menggunakannya.
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