我将一个对象数组作为HTTP响应,并且我试图通过对象中的值对它们进行分组。举一个例子,我们说我得到以下内容:
[
{player: 'Jordy Nelson', team: 'Packers'},
{player: 'Aaron Rogers', team: 'Packers'},
{player: 'Dak Prescott', team: 'Cowboys'},
{player: 'Ezekiel Elliot', team: 'Cowboys'},
{player: 'Joe Flacco', team: 'Ravens'},
{player: 'Julio Jones', team: 'Falcons'},
]
我试图接受该响应并将其转换为包含对象数组的对象数组
[
{'Packers':
[
{player: 'Jordy Nelson', team: 'Packers'},
{player: 'Aaron Rogers', team: 'Packers'}
]
},
{'Cowboys':
[
{player: 'Dak Prescott', team: 'Cowboys'},
{player: 'Ezekiel Elliot', team: 'Cowboys'}
]
},
{'Ravens':
[
{player: 'Joe Flacco', team: 'Ravens'}
]
},
{'Falcons':
[
{player: 'Julio Jones', team: 'Falcons'}
]
}
]
我尝试过以其他SO帖子中提到的方式使用groupBy
return this.http
.get(`${environment.baseUrl}/players`, options)
.map(res => res.json())
.groupBy(
res => res.team,
res => res // I've also tried removing this, filtering and flatmap
)
.flatMap(teams => {return teams})
但是它返回一个2d数组,其中轴1是一个单个对象,如下所示:
[
[
{'Packers': {player: 'Jordy Nelson', team: 'Packers'}
],
[
{'Packers': {player: 'Aaron Rogers', team: 'Packers'}
]
]
我需要做什么才能正确格式化我的回复?谢谢!
在@coderek回答的帮助下,我编写了一个可以动态重新组合HTTP响应的小功能(因此,每当您想要在不同的密钥上进行groupBy时,您都不会触及API) 。如果有其他人遇到此问题https://www.reddit.com/r/Angular2/comments/629nfg/how_to_dynamically_group_a_http_response/
,请点击reddit上的帖子答案 0 :(得分:3)
<spring:message code="${error.code}" arguments="${error.arguments}" text="${error.defaultMessage}"/>
适用于流。所以
首先,您需要先将源转换为流而不是数组。
其次,您可以按流获取组结果,这就是可观察的工作方式。
GroupBy