blob: 2aaea53277ed94678502a49dc50549a1a6db5e52 [file] [log] [blame]
/**
* Copyright 2019 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {Pipe, PipeTransform} from '@angular/core';
/**
* Maps a list of objects to a given field for each object.
*
* Example: Given a list of Tests with a 'name' field, it will return a list of
* the names
*/
@Pipe({name: 'mapListField'})
export class MapListFieldPipe implements PipeTransform {
transform<T>(list: T[]|null, field: keyof T, allowDuplicates = false):
Array<T[keyof T]> {
if (!list) {
return [];
}
const fieldList = list.map(val => val[field]);
if (allowDuplicates) {
return fieldList;
} else {
return Array.from(new Set(fieldList));
}
}
}