Javascript Angular2 linq样式属性访问器

Javascript Angular2 linq样式属性访问器,javascript,linq,angular,model,Javascript,Linq,Angular,Model,通常,我们会看到需要提取特定值的数组(IEnumerable)属性。在c#中,我们可以做类似的事情: public AssetModel PromoImage { get { return Assets.FirstOrDefault(x => x.AssetTypeCd == "promoimage"); } private set { } } 在Angular 2中有没有一种方法可以轻松实现

通常,我们会看到需要提取特定值的数组(IEnumerable)属性。在c#中,我们可以做类似的事情:

public AssetModel PromoImage {
        get
        {
            return Assets.FirstOrDefault(x => x.AssetTypeCd == "promoimage");
        }
        private set { }
    }
在Angular 2中有没有一种方法可以轻松实现这一点?

为JavaScript程序(以及其他一些程序)提供了与LINQ类似的功能,尽管没有延迟执行——LINQ查询延迟到被枚举,而lodash(通常)会立即执行查询并返回结果数组/对象。(虽然在本例中,LINQ甚至不会延迟它,因为
FirstOrDefault
返回标量,而不是可查询/可枚举的。)

在您的情况下,您可以这样做:

let obj = {
    get promoImage() {
        return _.find(assets, a => a.assetTypeCd === 'promoimage');
    },

    // ...
};
然后访问
obj.promoImage
将执行函数以获取属性值

(这里我假设这是我们创建新对象的地方,
assets
是构造函数词法范围内的资产列表。如果您在对象本身而不是构造函数值中存储数据,则可以将其更改为reference
this


注:

  • Lodash完全不依赖于角度
  • ES6在阵列原型上提供了一种方法,因此一旦采用ES6,该功能将内置到浏览器中。不幸的是,IE(像往常一样)是没有任何支持的异常值。但是,Lodash仍然是工具箱中非常有用的库,请注意,Lodash的
    find()
    也适用于对象,而不仅仅是数组