我有一個陣列快照超出Firebase,其中包含我的應用程序的條目。在其他信息有AA時間戳稱爲「referenceDate」:Javascript:創建另一個陣列
entry [0] { referenceDate: 2017-08-03,...
entry [1] { referenceDate: 2017-08-02,...
entry [2] { referenceDate: 2017-08-01,...
entry [3] { referenceDate: 2017-07-03,...
entry [4] { referenceDate: 2017-07-02,...
我要輸出的月和年這樣
08.2017
03.08.2017
02.08.2017
01.08.2018
07.2017
03.07.2017
02.07.2017
我的想法標題下分組的條目是循環陣列上方-snapshot並創建另一個嵌套,如下所示:
{"monthYear": "08.2017":[
{"referenzDatum": 2017-08-03},... },
{"referenzDatum": 2017-08-02},... },
{"referenzDatum": 2017-08-01},... },]},
{"monthYear": "07.2017":[
{"referenzDatum": 2017-07-03},... },
{"referenzDatum": 2017-07-02},... }, ...]}
然後用兩個嵌套的ngFor循環來生成html輸出。
有沒有簡單的方法來實現這一點?我嘗試按照相應的monthyear將舊的條目推入新的數組中,只要此更改,但沒有解決,因爲引用被複制。 然後我嘗試了下面的代碼,但它不會超過2個不同的月份,代碼看起來很糟糕。
var oldDate: string;
var newDate: string;
sortedLogLine.entries = [];
this.sortedLog = [];
for (var i = 0; i < entries.length; i++) {
newDate = entries[i].referenceDate.substring(0, 7).split('-').reverse().join('.');
if (oldDate == newDate) {
sortedLogLine.entries.push(entries[i]);
}
if (!oldDate) {
sortedLogLine.entries.push(entries[i]);
sortedLogLine.monthYear = newDate;
oldDate = newDate;
}
if (oldDate != newDate) {
pushSortedLogLine.entries = sortedLogLine.entries.slice(0);
pushSortedLogLine.monthYear = oldDate;
this.sortedLog.push(pushSortedLogLine);
sortedLogLine.entries = [];
sortedLogLine.entries.push(entries[i]);
sortedLogLine.monthYear = newDate;
oldDate = newDate;
}
}
this.sortedLog.push(sortedLogLine);
有關如何更有效地做到這一點的任何建議?
是否嘗試過[Underscore GroupBy](http://underscorejs.org/#groupBy)? –