繁体   English   中英

如何使用 TypeScript 避免嵌套循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM