[英]How to avoid nested loop using TypeScript
我正在处理我想从 employeeList 数组中获取用户名的应用程序。 这是我通过使用嵌套循环来获取它,但这不是好的做法。 这是我的代码
let _empList = await this.empService.getEmployeesList();
let taskEvents = await this.taskService.renderedTaskGridData(
_tasksData,
undefined
);
let associatesList = [];
for (let proj of this.projectsData) {
let projTasks = [...taskEvents.filter((x) => x.ProjectId === proj.Id)];
_empList.forEach((x) => {
projTasks.forEach((y) => {
y.AssociatedUsersId.forEach((z) => {
if ((x.Id = z)) {
associatesList.push(`${x.FirstName} ${x.LastName}`);
}
});
});
});
}
我需要使用最佳实践来获取列表。
我将提前转到 go 并假设您关心的问题是渐近复杂性(即 - 您的运行时间相对于输入的大小增加了多少)。
我解决这个问题的方法是进行时空权衡,如下所示:
let associatesList = [];
const projectIds = new Set(this.projectsData.map((proj) => proj.Id));
const userIds = new Set(
taskEvents
.filter((task) => projectIds.has(task.ProjectId))
.flatMap((event) => event.AssociatedUsersId)
);
const employees = _empList
.filter((employee) => userIds.has(employee.Id))
.map((employee) => `${employee.FirstName} ${employee.LastName}`);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.