Rumah > Soal Jawab > teks badan
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?
黄舟2017-07-05 10:38:42
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.
三叔2017-07-05 10:38:42
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
PHP中文网2017-07-05 10:38:42
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
迷茫2017-07-05 10:38:42
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 sepadan
Dapatkan data yang sepadan untuk setiap bulan dan proseskannya secara bulanan
滿天的星座2017-07-05 10:38:42
Biarkan bahagian belakang memproses pengumpulan data, dan bahagian hadapan bertanggungjawab untuk menggunakannya.
巴扎黑2017-07-05 10:38:42
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