由於某種原因,我磕磕絆絆來得到我需要的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
我不知道你是否需要,但我已經更新了我的答案。 –