【问题标题】:How to do a search on all values?如何搜索所有值?
【发布时间】:2018-07-13 21:06:12
【问题描述】:

如何实现对 Angular2 的所有值的搜索。代码如下:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'filter'
})
export class FilterPipe implements PipeTransform {

  transform(projects: any, search: any): any {
  if(search === undefined) return projects;

    return projects.filter(function(project)
    {
    return project.name.toLowerCase().includes(search.toLowerCase());
    })

  }

}

目前只能按姓名搜索,怎么做才能查看表中的所有值(例如id、name、surname、country等)

【问题讨论】:

  • 这是一个单层对象吗?没有内部对象?

标签: angular typescript


【解决方案1】:
 return projects.filter(function(project)
{
      return project.name.toLowerCase().includes(search.toLowerCase())
      ||
      return project.id.toLowerCase().includes(search.toLowerCase())
      ||
      return project.surname.toLowerCase().includes(search.toLowerCase())
      ||
      ...
       ;
})

或者你可以看看Array filtering on multiple fields之类的东西

【讨论】:

    【解决方案2】:

    如果对象只有 1 级深度,您可以在进行比较之前遍历所有键并连接所有值。

    它看起来像这样。

    function search(projects, search) {
        return projects.filter(p => {
            return Object
                .keys(p) // get all keys
                .map(k => p[k]) // get all values
                .reduce((prev, current) => prev + current, '') // concat
                .toLowerCase() // lowercase
                .includes(search.toLowerCase()); compare
        });
    

    而且是管道形式。

    import { Pipe, PipeTransform } from '@angular/core';
    
    @Pipe({
        name: 'filter'
    })
    export class FilterPipe implements PipeTransform {
    
        transform(projects: any, search: any): any {
             if(search === undefined) return projects;
             return projects.filter(p => {
                return Object
                    .keys(p)
                    .map(k => p[k])
                    .reduce((prev, current) => prev + current, '')
                    .toLowerCase()
                    .includes(search.toLowerCase());
            });
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-16
      • 2011-06-26
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 1970-01-01
      相关资源
      最近更新 更多