【发布时间】:2018-08-30 18:53:29
【问题描述】:
所以我有这两个数组:
resultList: { date: string, amount: number }[] = [];
dateList: { date: string, amounts: { amount: number }[] }[] = [];
其中一个有所有结果,我想按日期排序,因此是第二个数组。 这是我用来尝试实现此目的的代码:
this.resultList.forEach((result) => {
let dateFound: boolean = false;
this.dateList.forEach((date) => {
if (result.date === date.date) {
dateFound = true;
return;
}
});
if (dateFound == false) {
//create new date entry in dateList
this.dateList.push({date: result.date, amounts: []});
}
//find that date entry and push a value to it's sub array called amounts
this.dateList.find((dates) => {
return dates.date == result.date
}).amounts.push({
amount: result.amount
});
});
如果您有 3 个相同日期的结果,则输出
[
{date: '2018-03-21', amounts: [{amount: 1}]},
{date: '2018-03-21', amounts: [{amount: 1},{amount: 43}]},
{date: '2018-03-21', amounts: [{amount: 1},{amount: 43}, {amount: 55}]}
]
如果您有 3 个相同日期的结果,则需要 OUTPUT
[
{date: '2018-03-21', amounts: [{amount: 1},{amount: 43}, {amount: 55}]}
]
【问题讨论】:
-
你能发布一个有效的输入数据吗?
-
if using lodash then _.groupBy else use lodash -
@georg hehehe yes or yes!
-
对我来说,代码似乎可以工作......
-
@H.B.这很奇怪,我从另一个项目中复制了这段代码,在那里我做了同样的事情,它在那里工作。所以我想我可能做错了什么,或者 find 不能那样工作。
标签: javascript arrays typescript multidimensional-array