[英]Angular2 linq style property accessor
通常,我们会遇到需要提取特定值的数组(IEnumerable)属性。 在C#中,我们可以执行以下操作:
public AssetModel PromoImage {
get
{
return Assets.FirstOrDefault(x => x.AssetTypeCd == "promoimage");
}
private set { }
}
有没有办法在Angular 2中轻松做到这一点?
Lodash为JavaScript程序(以及某些功能)提供了与LINQ类似的功能,尽管没有延迟执行-LINQ查询被延迟直到被枚举,而lodash(通常)会立即执行查询并返回结果数组/对象。 (尽管在这种情况下,LINQ甚至不会推迟它,因为FirstOrDefault
返回标量,而不是可查询/可枚举的对象。)
对于您的情况,您将执行以下操作:
let obj = {
get promoImage() {
return _.find(assets, a => a.assetTypeCd === 'promoimage');
},
// ...
};
然后访问obj.promoImage
将执行该函数以获取属性的值。
(这里我假设这是我们创建新对象的地方, assets
是构造函数的词法作用域中的资产列表。如果您将数据存储在对象本身上而不是在构造函数上值中,则可以更改它以引用this
对象)
笔记:
find()
方法,因此一旦采用ES6,此功能将内置于浏览器中。 可悲的是,IE(通常)是离群值,没有任何支持。 但是,Lodash仍然是您工具箱中非常有用的库,请注意,Lodash的find()
可用于对象,而不仅仅是数组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.