代码之家  ›  专栏  ›  技术社区  ›  SmartestVEGA

数据表筛选器逻辑更改未反映

  •  0
  • SmartestVEGA  · 技术社区  · 8 年前

    我试图改变角度数据表中的过滤逻辑

    export class FilterPipe implements PipeTransform {
        keys = [];
        transform(items: any, args: string): any {
          console.log('Datatable test');
            if (items != null && items.length > 0) {
              let ans = [];
    
              if (this.keys.length == 0) {
                this.keys = Object.keys(items[0]);
              }
    
              for (let i of items) {
                for (let k of this.keys) {
    
                  if (String(i[k]).toLowerCase().indexOf(args.toLowerCase()) >= 0) {
    
                    ans.push(i);
    
                    break;
                  }
                }
              }
              return ans;
            }
     }
    }
    

    有人请给它点光吗?

    1 回复  |  直到 8 年前
        1
  •  0
  •   user4676340 user4676340    8 年前

    你缺少一个 else

    此外,您可以简化全文搜索,如下所示:

    export class FilterPipe implements PipeTransform {
      transform(items: Object[], args: string): any {
        console.log('Datatable test');
    
        if (!items || !items.length) { return []; }
    
        return items
          .filter(item => Object.keys(item)
            .some(key => item[key].toLowerCase().includes(args.toLowerCase()))
          );
      }
    }
    
    推荐文章