私はこのような配列を持っています
var data = [[1411151400000,1686],[1428604200000,1686],[1411151400000,1686]....]
このデータを月に基づいてグループ化し、その月のデータを合計する必要があります。
最終的な出力は次のようになります。
var final = [[timestamp for month, sum of value of that month],[]]
以下は私が試したコードですが、正しい結果が得られないので、配列のMapreduceで実行できるかどうかを考えています
if(aggregatorType === "month")
{
sum = 0;
$.each(datalooper,function(key,value){
var date = new Date(value[0]);
var month = date.toString("MMMM");
var year = date.toString("yyyy");
var temparr = [];
var lastdate = 0;
if(!iterator[month+"_"+year]){
iterator[month+"_"+year] = value;
temparr.push(value[0]);
temparr.push(sum);
if(sum != 0)
newArr.push(temparr);
sum = 0;
}
else{
sum = sum+ value[1];
lastdate=value[0];
}
})
totalObj.push(newArr);
newArr = [];
iterator = {};
}
return totalObj;
}
年と月を取得し、それに値をグループ化するソリューション。
Date#toString
セットにパラメータはありません。
年と月を使用して取得されるDate#getYear
とDate#getMonth
。
var data = [[1411151400000, 1686], [1428604200000, 1686], [1411151400000, 1686]],
grouped = function (array) {
var r = [], o = {};
array.forEach(function (a) {
var date = new Date(a[0]),
month = date.getMonth() + 1,
key = date.getFullYear() + '-' + (month < 10 ? '0' : '') + month;
if (!o[key]) {
o[key] = [key, 0];
r.push(o[key]);
}
o[key][1] += a[1];
});
return r;
}(data);
document.write('<pre>' + JSON.stringify(grouped, 0, 4) + '</pre>');
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加