Arrays 在Typescript/Angular 2中,如何通过对象的属性在数组中查找对象

Arrays 在Typescript/Angular 2中,如何通过对象的属性在数组中查找对象,arrays,typescript,angular,Arrays,Typescript,Angular,我已经做了一些搜索,似乎有一些可能的解决方案 第一个可能有效的方法是: 但我发现使用管道和for循环并不理想 我的想法是使用一个界面 这将是一个typescript解决方案。这里的问题是定义集合 公共封面=封面; 公共图像=向量;//大型图像收藏 imagesByCoverType:CoverVector={};//如果 //我使用向量[];但我想使用接口。 //图像已正确过滤到相关图像。 恩戈尼尼特(){ this.imagesByCoverType=this.images.filter( i

我已经做了一些搜索,似乎有一些可能的解决方案

第一个可能有效的方法是:

但我发现使用管道和for循环并不理想

我的想法是使用一个界面

这将是一个typescript解决方案。这里的问题是定义集合

公共封面=封面;
公共图像=向量;//大型图像收藏
imagesByCoverType:CoverVector={};//如果
//我使用向量[];但我想使用接口。
//图像已正确过滤到相关图像。
恩戈尼尼特(){
this.imagesByCoverType=this.images.filter(
image=>image.type===‘封面’;
}
//当然是在组件类之外定义的。
界面覆盖向量{
[图书编号:编号]:矢量;
}

{{cover.title}

{{imagesByCoverType[cover.id].url}

所以我想通过使用接口访问数组中的对象。我该怎么做?还考虑到我有一个过滤过的向量数组,它应该遍历

为清晰起见,请重述: 我想:

  • 具有连接到“接口”或find方法的唯一标识符的大型数据集合

  • 此接口应能输入此唯一id并使用它访问所需对象

  • 那么这个对象的所有属性都应该是可访问的。或者在这种情况下,实际上只有url。要点是:它应该存在,不仅仅是接口属性,还有任何所需的对象属性

  • 然后,所有这些都被优雅地包装在一个有棱角的2 ngIf语句中

  • 我没想到在数组中按对象属性查找会如此困难,但这是一场斗争

    我当前使用的解决方案

    我无法理解为什么我必须求助于一个完整的for循环来访问一个我已经知道其标识符的元素-从它上面的for循环-但是我使用了一个使用自定义管道的for循环

    //角度2
    从“@angular/core”导入{Pipe,PipeTransform};
    @烟斗({
    姓名:'封面'
    })
    导出类CoverVectorPipe{
    转换(值:任意,封面id:编号){
    返回值.filter(
    (项目:任何)=>item.aim\u id===封面\u id);
    }
    }
    
    仍然欢迎使用接口解决此问题的任何帮助

    我还想知道这在计算上是否昂贵