Angular 通过数组中的所有属性通过循环索引在循环中发出

Angular 通过数组中的所有属性通过循环索引在循环中发出,angular,Angular,我在表的所有列上实现一个过滤器。因此,每当用户搜索任何内容时,函数都应该搜索整个数组中的值,并且只返回过滤后的行。这意味着它应该检查数组项的所有属性是否匹配 在Angular 8中,我使用一个数组绑定我的表,该数组有4行和多个属性。我的数组看起来像这样 export const Hero = [ { id: 11, name: 'Dr Nice', age: 30 }, { id: 12, name: 'Narco', age: 35} ]; 现在,当我尝试筛选出行时,我需要将se

我在表的所有列上实现一个过滤器。因此,每当用户搜索任何内容时,函数都应该搜索整个数组中的值,并且只返回过滤后的行。这意味着它应该检查数组项的所有属性是否匹配

在Angular 8中,我使用一个数组绑定我的表,该数组有4行和多个属性。我的数组看起来像这样

export const Hero = [
  { id: 11, name: 'Dr Nice', age: 30 },
  { id: 12, name: 'Narco', age: 35}
  ];
现在,当我尝试筛选出行时,我需要将searchtext与数组的所有行和所有属性(id、名称和年龄)相匹配。数组项是循环的,但属性名不能循环,因为它们只能通过名称而不是索引访问

HTML代码

<input type="text" class="searchBox" #txtSearch (keyup)="filterHerosKeyUp(txtSearch.value)" placeholder="Search for names.." title="Type in a name">
在这里,我希望遍历所有属性(id、名称和年龄)的所有项


请告知。

您可以使用
Object.keys
循环对象中的所有值

试试这个:

filterHerosKeyUp(filter: string) { // without type info
   const data = this.Hero.slice();
   this.filteredValues = data.filter(item => {
       var keys = Object.keys(item);
       for(let key of keys){
           if(item[key] == filter)
               return true;
       }
       return false;
   });
}

请创建stackblitz或在此处发布您的代码?您的方法在html和ts文件中有不同的名称。谢谢Mustahsan,但我不想使用属性(Id、名称或年龄)。我可以循环数组中的所有可用属性。所以,无论何时我在数组中添加或删除任何属性,我都不需要更改筛选器代码。它可以使筛选器字符串完全匹配,如果它不完全匹配,它应该返回。我尝试了这个-----------------if((item[key]).toLowerCase().indexOf(filter.toLowerCase())=-1){return true;}如果(item[key].toLowerCase().includes(filter.toLowerCase())再次使用此函数,这不是函数的问题,而是由于尝试将int值转换为toLowerCase()。我使用JSON.stringify(item[key]);而且成功了。
filterHerosKeyUp(filter: string) { // without type info
   const data = this.Hero.slice();
   this.filteredValues = data.filter(item => {
       var keys = Object.keys(item);
       for(let key of keys){
           if(item[key] == filter)
               return true;
       }
       return false;
   });
}