2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
22 * Created by rc2122 on 5/17/2017.
24 import {Pipe, PipeTransform} from '@angular/core';
26 @Pipe({name: 'groupBy'})
27 export class GroupByPipe implements PipeTransform {
28 transform(value: Array<any>, field: string): Array<any> {
32 const groupedObj = value.reduce((prev, cur)=> {
33 if(!prev[cur[field]]) {
34 prev[cur[field]] = [cur];
36 prev[cur[field]].push(cur);
40 return Object.keys(groupedObj).map((key:string) => {return { key, value: groupedObj[key] }; });