Javascript Angular2 linq样式属性访问器
通常,我们会看到需要提取特定值的数组(IEnumerable)属性。在c#中,我们可以做类似的事情: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中有没有一种方法可以轻松实现
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
是构造函数词法范围内的资产列表。如果您在对象本身而不是构造函数值中存储数据,则可以将其更改为referencethis
)
注:
- Lodash完全不依赖于角度
- ES6在阵列原型上提供了一种方法,因此一旦采用ES6,该功能将内置到浏览器中。不幸的是,IE(像往常一样)是没有任何支持的异常值。但是,Lodash仍然是工具箱中非常有用的库,请注意,Lodash的
也适用于对象,而不仅仅是数组find()