Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Pipe, PipeTransform } from '@angular/core';
- @Pipe({
- name: 'search'
- })
- export class SearchPipe implements PipeTransform {
- private c = 0;
- transform(given: any, s?:any, f?:any, l?:any, i?:any, reload?:any): any {
- if(!s){
- return given;
- }
- if(typeof f == 'number'){
- l = f;
- f = null;
- }
- if(i || !s){
- if(l && Array.isArray(given)) return given.slice(0, l);
- else return given||[];
- }
- let _arr = [], _check = {};
- if(!Array.isArray(s)&&typeof s == 'object'){
- let _s = [];
- for(let key in s){
- if(s[key]) _s.push(key);
- }
- s = _s;
- }
- if(typeof s == 'string'){
- s = [s];
- }
- if(!f) f = ['name'];
- if(typeof f == 'string') f = f.split(' ');
- let sub_test = function(obj, _f, initObj, check){
- if(!obj) return;
- if(_f.indexOf('.')>-1){
- let sub = _f.split('.');
- let nsub = sub.shift();
- if(Array.isArray(obj[nsub])){
- for(let s = 0; s < obj[nsub].length; s++){
- sub_test(obj[nsub][s], sub.join('.'), initObj, check);
- }
- return;
- }else{
- return sub_test(obj[nsub], sub.join('.'), initObj, check);
- }
- }
- for (let j = 0; j < s.length; j++) {
- let b = false;
- if((typeof obj[_f] == 'string' || typeof obj[_f] == 'number') && typeof s[j] == 'string' &&
- (obj[_f].toString().toLowerCase().indexOf(s[j].toLowerCase())>-1 ||
- s[j].toLowerCase().indexOf(obj[_f].toString().toLowerCase())>-1)){
- if(!_check[check]) _arr.push(initObj);
- _check[check] = true;
- b = true;
- break;
- }
- if(b) break;
- }
- }
- let test = function(obj, check) {
- for (let i = 0; i < f.length; i++) {
- sub_test(obj, f[i], obj, check);
- }
- }
- if (Array.isArray(given)) {
- for (let i = 0; i < given.length; i++) {
- test(given[i], i);
- }
- } else if (typeof given == 'object') {
- for (let key in given) {
- test(given[key], key);
- }
- }
- if(l) return _arr.splice(0, l);
- return _arr;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement