У меня есть массив, как показано ниже. В моем реальном случае у него тысячи объектов.Подсчитайте число в массиве данных 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);