Javascript 如何按角度数组中的属性过滤对象?

Javascript 如何按角度数组中的属性过滤对象?,javascript,angular,Javascript,Angular,我有一个数组元素。我想通过在数组中过滤来显示其中一个对象的标题。比如: <p>{{ element | myFilter:'type':'Type1').title }}</p> 但那没用 我的阵列: [ { "type": "Type1", "title": "Message 1" }, { "typ

我有一个数组元素。我想通过在数组中过滤来显示其中一个对象的标题。比如:

<p>{{ element | myFilter:'type':'Type1').title }}</p>
但那没用

我的阵列:

[
      {
       "type": "Type1",
       "title": "Message 1"
      }, 
      {
       "type": "Type2",
       "title": "Message 2"
      }
]
我想展示的是类型1的标题。比如:

{{element | myFilter:'type':'Type1')。title}

如何做到这一点在角


将过滤器对象传递到管道的方式不正确。你在传递信息

这样使用:

{(元素| myFilter:{'type':'Type1'})?.title}

`

另外,语句开头缺少一个

您将数据错误地传递到管道中,并且括号放置不正确。您应该修复括号,并将数据作为字符串传递:

{{(元素| myFilter:'Type1').title}

此外,您在错误的属性上筛选管道。对于管道的更新数据输入,它应该是:

export class MyFilterPipe implements PipeTransform {
  transform(items: any[], filter: string): any {
    if (!items || !filter) {
      return items;
    }
    return items.find(item => item.type === filter);
  }
}


是否要使用just type进行筛选?实际上是broad,因此您也可以按标题或添加的属性进行筛选later@Can
Array.prototype.filter
返回的是什么类型?它返回的是单个对象还是数组?如果是数组,您能否访问属性,例如
title
doing
[{id:1,title:'foo'}].title
?还是需要循环项目或通过索引获取项目?如果要查找返回单个项目的数组方法,请使用
array.prototype.find
。@AlexanderStaroselsky它将返回单个项目,因此find现在可以工作了!谢谢。但需要了解如何使用多个属性而不是“type”。What type不返回数组.prototype.filterreturn?您是否可以直接访问数组上的属性,如
[{id:1,title:'foo'}].title
?或者您需要通过索引循环或访问对象吗?可能还有另一个数组方法,例如
find
,它将返回单个项?
filter
返回已放入其中的类型。在这种情况下,即
{type:string,title:string}
,正如您从问题中定义为输入的数组中看到的那样。@tommueller不工作,我现在在
(filter.type)上也发现了一个错误
管道中的一部分。错误:
属性“type”在类型“Object”上不存在。
Ah当然,您正在传递一个字符串。我更新了应答。您将管道的输入更改回一个对象,然后根据对象执行筛选逻辑。@是否筛选不正确,请检查更新的代码
export class MyFilterPipe implements PipeTransform {
  transform(items: any[], filter: string): any {
    if (!items || !filter) {
      return items;
    }
    return items.find(item => item.type === filter);
  }
}