我有一个阵列快照超出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)? –