Skip to content

Instantly share code, notes, and snippets.

@SnisarOnline
Last active July 11, 2019 11:01
Show Gist options
  • Save SnisarOnline/6c1f3b7674d855e96d67b878145ffd24 to your computer and use it in GitHub Desktop.
Save SnisarOnline/6c1f3b7674d855e96d67b878145ffd24 to your computer and use it in GitHub Desktop.
Фильтер масива обьектов по ключу / вводимым данным / уникальным значениям.
import {Pipe, PipeTransform} from '@angular/core';
/**
* Returns filtered array
*/
@Pipe({ name: 'filter' })
export class FilterPipe implements PipeTransform {
/**
* @param array incoming array not sort
* @param field name Fields to sort
* @param input array to sorting
*/
transform(array: any[], field: string, input?: string) {
if (array !== undefined && input !== undefined) {
input = input.toLowerCase();
if (typeof array[0] === 'string') {
return array.filter(function(el: any) {
return el.toLowerCase().indexOf(input) > -1;
});
}
return array.filter(function(el: any) {
return el[field].toLowerCase().indexOf(input) > -1;
});
}
if (array !== undefined && input === undefined) {
let allValue = array.map( (elem) => elem[field] );
return Array.from(new Set(allValue));
// OR
/*
let unique = array.reduce( (acc,elem) => {
return acc.add(elem[field]);
}, new Set() );
return Array.from(unique);
*/
}
return array;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment