typescript 使用Filter方法时无法过滤数据

ff29svar  于 2023-02-10  发布在  TypeScript
关注(0)|答案(1)|浏览(195)

我在管道中使用这个过滤函数

transform(value: any, args?: any): any {

    if(!value)return null;
    if(!args)return value;
      if(!value)return null;
      if(!args)return value;
      args = args.toLowerCase();
      return value.filter(function(item){
          return JSON.stringify(item).toLowerCase().includes(args);
      });
}

它将检查密钥的类型

[
    {
        "FirstName": "Ashish",
        "LastName": "Kumar",
    },
    {
        "FirstName": "Pawan",
        "LastName": "Verma",
    },
    ...
    ...
]

[
        {
            "Name": "Ashish Kumar",
        },
        {
            "Name": "Pawan Verma",
        },
        ...
        ...
    ]

在我的例子中,如果我传递像Ashish这样的空格,那么数据就不匹配
let user of Info |SearchUser:Search
在这种情况下

{
            "FirstName": "Ashish",
            "LastName": "Kumar",
        },

对于此"Name": "Ashish Kumar",..,将显示记录

ua4mk5z4

ua4mk5z41#

假设value中的对象深度为1,则可以执行以下操作:

transform(value: any[], search?: string): any[] | null {
    if (!value) return null;
    if (!search) return value;
    const lowerSearch = search.toLowerCase(); // could trim this here.
    return value.filter(item => {
        for(let key in item){
            // if you want to ignore leading/trailing spaces do
            // if(item[key].toLowerCase?.().includes(lowerSearch.trim()))
            if(item[key].toLowerCase?.().includes(lowerSearch))
                return true;
        }
        return false;
    });
    
}

相关问题