javascript - 按数组键分组
问题描述
我有一组看起来像这样的数据:
{schedules: {team_name: 'Red', color: '#...', due_date '12-12-2018', yards: []} etc
我有一个函数将它分组到一个以团队名称为键的数组中,它工作正常:
setGroupedSchedules(): void {
let groups = {};
let schedules = this.schedules;
for(let schedule of schedules) {
let teamName = (schedule.team ? schedule.team.name : 'Unassigned');
groups[teamName] = !groups[teamName] ? [] : groups[teamName];
groups[teamName].push(schedule);
}
this.grouped = groups;
}
如何还包括每个分组的 team.color?
结果:
<div style="background:team_color">
Team: Red
- Schedule 1
- Yard
- Yard
- Schedule 2
- Yard
</div>
解决方案
也许是这样的?
for(let schedule of schedules) {
let teamName = (schedule.team ? schedule.team.name : 'Unassigned');
let teamColor = (schedule.team ? schedule.team.color : 'Unassigned');
groups[teamName] = !groups[teamName] ? [] : groups[teamName];
colorSchedule = {color: teamColor, team: schedule.team};
groups[teamName].push(colorSchedule);
}
然后该方法的结果将类似于
{
"Red": [
{
"color": "#...",
"team": {
"name": "Red",
"color": "#...",
"due_date": "12-12-2018",
"yards": []
}
}
]
}
哪个让您更容易看到每个时间表的颜色?我不确定这是否是您正在寻找的,因为颜色和团队名称已经可以访问而无需运行您的方法。
function setGroupedSchedules() {
let groups = {};
let schedules = [{team: {name: 'Red', color: '#...', due_date: '12-12-2018', yards: []}}];
for(let schedule of schedules) {
let teamName = (schedule.team ? schedule.team.name : 'Unassigned');
let teamColor = (schedule.team ? schedule.team.color : 'Unassigned');
groups[teamName] = !groups[teamName] ? [] : groups[teamName];
colorSchedule = {color: teamColor, team: schedule.team};
groups[teamName].push(colorSchedule);
}
return groups;
}
console.log(setGroupedSchedules())
推荐阅读
- python - 如何绘制导出的概率密度函数?
- python - 找到一个确切的字符串并将其保存在python中
- android - grantUriPermissions() 上的 SecurityException
- javascript - HTML5 音频 - 获取充满零的频率数组
- c - 如何将gets() 用于以下代码?
- angular - 角度 - 在组件中使用有条件不同布局的最佳实践
- c - 宏在 C 语言中给出了错误的值
- python - 错误:文件不以 RIFF id 开头
- r - combine_vars(vars, ind_list) 中的错误:R 中的位置必须介于 0 和 n 之间
- android - Xamarin Android GridLayout - 行跨度适用于设计器,但不适用于模拟器