我有一個如下所示的數組。在我的真實情況下,它有成千上萬的對象。計數數組中的數字javascript
var data = [
{type:'A',time:'2009'},
{type:'A',time:'2009'},
{type:'A',time:'2009'},
{type:'A',time:'2009'},
{type:'B',time:'2009'},
{type:'B',time:'2009'},
{type:'B',time:'2009'},
{type:'C',time:'2009'},
{type:'A',time:'2014'},
{type:'A',time:'2014'},
{type:'B',time:'2014'},
{type:'B',time:'2014'},
{type:'B',time:'2014'},
{type:'B',time:'2014'},
{type:'C',time:'2014'},
{type:'C',time:'2014'}
];
var validTime = ['2009', '2014'];
var typeArr = ['A','B','C'];
我想將「data
」數組轉換到「newData
」,它計算每年每種類型的計數。
var newData = [
{time:'2009', A:4, B:3, C:1},
{time:'2014', A:2, B:3, C:2}
]
這是我迄今所做的。我不知道下一步該怎麼做。我認爲我正在遠離正確的方法。我通常使用R來處理數據,並在幾個星期內提取javascript。任何人都可以指導我如何做到這一點或任何與類似問題的網絡資源將是非常有益的!!謝謝!
如果你可以在你的答案中加入一些評論,
var arr1 = [];
for (i = 0; i < validTime.length; i++) {
for (s = 0; s < typeArr.length; s++) {
var count = 0;
for (j = 0; j < data.length; j++) {
if (data[j]['time'] == validTime[i] && data[j]['type'] == typeArr[s]){
count++;
}
}
arr1.push({
'type': typeArr[s],
'x': validTime[i],
'y': count
});
}
};
console.log(arr1);