914 B
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 次操作。