我有一个ng2组件,它调用服务来获取搜索元数据。所以我在ng2组件上有一个名为searchMetadata的成员变量。结果集如下所示:
var searchMetadata =
{
Authors = Author[],
Titles = Title[]
}
Author对象有一组完全定义的属性,它描述了一个像FirstName,LastName等的Author。我正在使用一个select控件,它需要一个带有{id:123,text:'John Smith'等对象的绑定数据集。 }。所以我需要在组件上定义一个authors成员变量,并使用lambda将searchMetadata.Authors转换为预期的结构。以下是一些hacky代码,模糊地展示了如何使用C#lambda:
this.authors = this.searchMetadata.Select(
x => new {id:x.Id, text:x.FirstName + ' ' + x.LastName});
在ng2中写这种类型的lambda的正确方法是什么?
答案 0 :(得分:1)
尝试使用地图运算符:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
this.authors = this.searchMetadata.Authors.map(
x => ( {id:x.Id, text:x.FirstName + ' ' + x.LastName});
map
运算符允许您从一种类型“映射”到另一种类型。
困难的部分是使语法正确,因为使用{}暗示它是一个多行lambda ...这不是我们拍摄的。
只是将括号括在匿名类型旁边似乎可以解决问题。