如何在Aurelia中按过滤器进行分组

Ego*_*ich 6 javascript group-by filter aurelia

我正在寻找做某事的方法

JS

$scope.players = [
  {name: 'Gene', team: 'alpha'},
  {name: 'George', team: 'beta'},
  {name: 'Steve', team: 'gamma'},
  {name: 'Paula', team: 'beta'},
  {name: 'Scruath', team: 'gamma'}
];
Run Code Online (Sandbox Code Playgroud)

HTML:

<ul repeat.for="obj of players | groupBy: 'team'">
  Group name: ${obj.group}
  <li repeat.for="player of obj.values">
    player: ${player.name} 
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

有可能吗?或者以Aurelia方式做这种逻辑的更好方法是什么?

Leo*_*Leo 5

你可以用一个ValueConverter.

export class GroupByValueConverter {
    toView(array, groupBy) {

        var groups = {};

        array.forEach(function (o) {
            var group = o[groupBy];
            groups[group] = groups[group] || [];
            groups[group].push(o);
        });

        return Object.keys(groups).map(function (group) {
            return {
                group: group,
                values: groups[group]
            };
        })
    }
}
Run Code Online (Sandbox Code Playgroud)