【发布时间】:2021-04-16 09:12:18
【问题描述】:
我有一个项目列表,每个项目都包含一个状态列表。我需要在所有项目中找到具有特定 id 的状态。
在 C# 中我可以这样做:
List<StatusResponse> statusList = projects.SelectMany(x => x.Status).ToList();
StatusResponse status = statusList.Find(f => f.Id == id);
我什至可以在一行中完成所有操作:
StatusResponse status = projects.SelectMany(x => x.Status).FirstOrDefault(f => f.Id == id);
在 Typescript 中我这样做:
private getStatus(statusId: string): StatusResponse {
for (let project of this.selectedProjects) {
let status = project.status.find(find => find.id === statusId);
if (status)
return status;
}
return null;
}
问题:
Typescript 中是否有更简单的代码更少的解决方案?
【问题讨论】:
-
相当于
this.selectedProjects.flatMap(x => x.status).find(f => f.Id == statusId)。但这会收集所有status,然后使用find。在您的循环中,当找到状态时您会短路。因此,您当前的代码可能更适合性能 -
非常感谢。是的,性能是需要考虑的一点。但是由于我的列表非常小,所以使用 flatMap 应该不是问题。
标签: javascript c# arrays typescript