novo-elements
Version:
Bullhorn's NOVO Element Repository for Angular 2
29 lines (21 loc) • 622 B
text/typescript
import { Pipe, PipeTransform } from '@angular/core';
import { Helpers, can } from '../../utils/Helpers';
({
name: 'groupBy'
})
export class GroupByPipe implements PipeTransform {
transform(input: any, prop: string): Array<any> {
if (!Array.isArray(input)) {
return input;
}
const arr: { [key: string]: Array<any> } = {};
for (const value of input) {
const field: any = can(value).have(prop);
if (Helpers.isBlank(arr[field])) {
arr[field] = [];
}
arr[field].push(value);
}
return Object.keys(arr).map(key => ({ key, 'value': arr[key] }));
}
}