由于某种原因,我磕磕绊绊来得到我需要的Javascript数组的结果。使用唯一和总和从现有数组值创建新数组
我有包含一天的数据行和每行几个时间戳。我需要做的是将这些数据转换为chart.js的数组,但是按周合并行,并且总结小时(从时间戳)。下面是我从查询结果中创建一个新数组的地方,但我正在努力获得它,我需要它。
这里就是我创建阵列(加工):
function chartData(queryrowlist){
var weeks = [];
angular.forEach(queryrowlist, function(value, key)
{
weeks.push(moment(value.date).format('w'),getOnHours(value),getOffHours(value))
});
// create chart array ...
return chart;
}
的周阵列结束这样的:
["23",28800000,3600000,"23",30300000,2700000,"24",35400000,3300000,"24",30000000,3300000]
这是周数,OnHours,OffHours
的星期数将用作标签,小时数用作角度图/ chart.js中的开/关数据。问题是所有的周数都必须是唯一的,并且每周的总时数总计为每周。
所以,我需要输出一个这样的数组:
chart['weeks']=["23","24"]
chart['hours']=[[59100000,6300000],[65400000,6300000]]
这可能是简单,这只是我打一个念头墙......但如果有人有一个解决方案,我会感激。
预先感谢您。
更新:
对于任何人谁可能是指这个,结果数组是不正确的chart.js之。下面的答案是正确的...如问,我只是问了错误的东西,只有在以后才意识到。感觉像傻瓜:/
chart.js之希望是相同的阵列中的所有行的值,所以代替上述的例子是:
chart['weeks']=["23","24"]
chart['hours']=[[onhours,offhours],[onhours,offhours]]
它应该是:
chart['weeks']=["23","24"]
chart['hours']=[[onhours,onhours],[offhours,offhours]]
更新2
要进一步说明:
对于每个标签,都应该有一个值。如果你有3个标签,你应该有3个值。在我的情况下,有2组数值,这是因为我有2个系列(2行),1个用于开放时间,1个用于关闭时间。所以这里有一个完整的数组列表。
chart['labels']=["23","24","25"] // strings
chart['data']=[[onhours,onhours,onhours],[offhours,offhours,offhours]] // integers
chart['series']=['On Hours','Off Hours'] // strings
如果我只需要1行:
chart['labels']=["23","24","25","26"] // strings
chart['data']=[[onhours,onhours,onhours,onhours]] // integers, notice [ [ ] ]
chart['series']=['On Hours'] // strings
希望帮助!
你能在例如扩大?例如如果你有'chart ['weeks'] = [“23”,“24”,“25”]',你是否也应该有'chart ['hours'] = [[onhours,onhours,onhours],[offhours ,offhours,offhours]'? –
@HopefulLlama - 是的,这是正确的。我已经更新了这些例子。希望现在更清楚。 – Chris
我不知道你是否需要,但我已经更新了我的答案。 –