Files
2026-07-13 21:36:17 +08:00

914 B

title, impact, impactDescription, tags
title impact impactDescription tags
为重复查询构建索引映射 中低 100 万次操作降至 2000 次操作 javascript, map, indexing, optimization, performance

为重复查询构建索引映射

多次按同一键调用 .find() 应使用 Map。

错误做法(每次查找 O(n)):

function processOrders(orders: Order[], users: User[]) {
  return orders.map(order => ({
    ...order,
    user: users.find(u => u.id === order.userId)
  }))
}

正确做法(每次查找 O(1)):

function processOrders(orders: Order[], users: User[]) {
  const userById = new Map(users.map(u => [u.id, u]))

  return orders.map(order => ({
    ...order,
    user: userById.get(order.userId)
  }))
}

只需构建一次映射(O(n)),之后所有查找均为 O(1)。 对于 1000 个订单 × 1000 个用户:100 万次操作降至 2000 次操作。