Add detailed landing page development plan in docs/frontend_landing_plan.md: - Complete landing page structure (Hero, Problem/Solution, Features, Demo, CTA) - Design guidelines from downloaded skills (typography, color, motion, composition) - Security considerations (XSS prevention, input sanitization, CSP) - Performance targets (LCP <2.5s, bundle <150KB, Lighthouse >90) - Responsiveness and accessibility requirements (WCAG 2.1 AA) - Success KPIs and monitoring setup - 3-week development timeline with daily tasks - Definition of Done checklist Download 10+ frontend/UI/UX skills via universal-skills-manager: - frontend-ui-ux: UI/UX design without mockups - frontend-design-guidelines: Production-grade interface guidelines - frontend-developer: React best practices (40+ rules) - frontend-engineer: Next.js 14 App Router patterns - ui-ux-master: Comprehensive design systems and accessibility - ui-ux-systems-designer: Information architecture and interaction - ui-ux-design-user-experience: Platform-specific guidelines - Plus additional reference materials and validation scripts Configure universal-skills MCP with SkillsMP API key for curated skill access. Safety first: All skills validated before installation, no project code modified. Refs: Universal Skills Manager (github:jacob-bd/universal-skills-manager) Next: Begin Sprint 3 landing page development
38 lines
837 B
Markdown
38 lines
837 B
Markdown
---
|
||
title: Build Index Maps for Repeated Lookups
|
||
impact: LOW-MEDIUM
|
||
impactDescription: 1M ops to 2K ops
|
||
tags: javascript, map, indexing, optimization, performance
|
||
---
|
||
|
||
## Build Index Maps for Repeated Lookups
|
||
|
||
Multiple `.find()` calls by the same key should use a Map.
|
||
|
||
**Incorrect (O(n) per lookup):**
|
||
|
||
```typescript
|
||
function processOrders(orders: Order[], users: User[]) {
|
||
return orders.map(order => ({
|
||
...order,
|
||
user: users.find(u => u.id === order.userId)
|
||
}))
|
||
}
|
||
```
|
||
|
||
**Correct (O(1) per lookup):**
|
||
|
||
```typescript
|
||
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)
|
||
}))
|
||
}
|
||
```
|
||
|
||
Build map once (O(n)), then all lookups are O(1).
|
||
For 1000 orders × 1000 users: 1M ops → 2K ops.
|