Build Index Maps for Repeated Lookups
Multiple .find() calls by the same key should use a Map.
Incorrect (O(n) per lookup):
function processOrders(orders: Order[], users: User[]) {
return orders.map((order) => ({
...order,
user: users.find((u) => u.id === order.userId),
}));
}Correct (O(1) per lookup):
function processOrders(orders: Order[], users: User[]) {
let userById = new Map(users.map((u) => [u.id, u]));
return orders.map((order) => ({
...order,
user: userById.get(order.userId),
}));
}Build map once (O(n)), then all lookups are O(1). For 1000 orders x 1000 users: 1M ops -> 2K ops.