我正在根据两个系列的日期创建图表:
>创建的项目数
>更新的项目数量
我从我们的API发出请求并获得了一个包含以下数据的文件:
"result":[
{
"closed_on" : "YYYY-MM-DD",
"created_on" : "YYYY-MM-DD"
}
{
"closed_on" : "YYYY-MM-DD",
"created_on" : "YYYY-MM-DD"
}
{
"closed_on" : "YYYY-MM-DD",
"created_on" : "YYYY-MM-DD"
}
{...}
]
我想知道什么是将图形数据作为此类对象的集合的最佳解决方案:
x : date,
created : integer,
updated : integer
我认为这是一个以日期作为索引的表,并遍历整个文件并增加索引表中的值.
但是,我在Internet上查找信息时遇到了一些问题.
我想到了类似的东西:
$scope.datas=[];
$scope.date = $scope.date.start;
while($scope.date!==$scope.date.end)
{
$scope.datas.push({
date
: [{
closed_tickets:0,
created_tickets:0
}]
});
$scope.date = $scope.date.addDays(1);
}
但是,它不起作用..有什么建议吗?
谢谢!
最佳答案 您可以尝试使用
reduce function.像这样的东西:
$scope.dateList = response.result //get the array of dates
$scope.datas = $scope.dateList.reduce(function(prev, current, index, array) {
var closedIndex = prev.findIndex(function(ele, i, a) {ele.x == current.closed_on});
if(closedIndex > -1)
prev[closedIndex].closed_tickets++;
else
prev.push({x:current.closed_on, closed_tickets:1, created_tickets:0});
var createdIndex = prev.findIndex(function(ele, i, a) {ele.x == current.created_on});
if(createdIndex > -1)
prev[createdIndex ].created_tickets++;
else
prev.push({x:current.created_on, closed_tickets:0, created_tickets:1});
return prev;
}, []);