本文介绍了如何使用角度过滤器获取准确的单词,而不是与值匹配的单词?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

例如,如果我搜索[App]我不想看到[Apple,Appliance,Appliances],而我只想在搜索中看到[App]

Example if i search [App] i don't want to see [Apple, Appliance, Appliances], instead i want to only see [App] in the search

    @Pipe({
    name: 'filter'
})
export class FilterPipe implements PipeTransform {
  transform(items: any, filter: any, isAnd: bool): any {
    if (filter && Array.isArray(items)) {
      let filterKeys = Object.keys(filter);
      if (isAnd) {
        return items.filter(item =>
            filterKeys.reduce((memo, keyName) =>
                (memo && new RegExp(filter[keyName], 'gi').test(item[keyName])) || filter[keyName] === "", true));
      } else {
        return items.filter(item => {
          return filterKeys.some((keyName) => {
            console.log(keyName);
            return new RegExp(filter[keyName], 'gi').test(item[keyName]) || filter[keyName] === "";
          });
        });
      }
    } else {
      return items;
    }
  }
}

推荐答案

您需要执行filter[keyName] === item[keyName]而不是执行new RegExp(filter[keyName], 'gi').test(item[keyName])).希望对您有帮助

Instead of doing new RegExp(filter[keyName], 'gi').test(item[keyName])), you will need to do filter[keyName] === item[keyName]. I hope this helps

这篇关于如何使用角度过滤器获取准确的单词,而不是与值匹配的单词?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-15 19:40