Skip to content
Foxipa
Code Completion 12 Challenges

Complete the JavaScript keyed collections code

Practice Map association, Set membership and algebra, and WeakMap object-keyed metadata.

Intermediate ~8 min read

Challenge 1

Associate a user ID with a record.

javascript Your answer
const users = new Map();
users.set(42, { name: "Ada" });

Press Ctrl⌘Enter to check your answer

Challenge 2

Read the record for ID 42.

javascript Your answer
const record = users.get(42);

Press Ctrl⌘Enter to check your answer

Challenge 3

Test whether ID 42 exists.

javascript Your answer
const known = users.has(42);

Press Ctrl⌘Enter to check your answer

Challenge 4

Track a completed user ID.

javascript Your answer
const completed = new Set();
completed.add(42);

Press Ctrl⌘Enter to check your answer

Challenge 5

Test whether a user ID is completed.

javascript Your answer
const done = completed.has(42);

Press Ctrl⌘Enter to check your answer

Challenge 6

Keep only shared capabilities.

javascript Your answer
const shared = first.intersection(second);

Press Ctrl⌘Enter to check your answer

Challenge 7

Combine capability sets without duplicates.

javascript Your answer
const all = first.union(second);

Press Ctrl⌘Enter to check your answer

Challenge 8

Associate metadata with an object identity without needing enumeration.

javascript Your answer
const cache = new WeakMap();
cache.set(element, metadata);

Press Ctrl⌘Enter to check your answer

Challenge 9

Return the existing value or insert a default value.

javascript Your answer
const value = settings.getOrInsert("theme", "light");

Press Ctrl⌘Enter to check your answer

Challenge 10

Lazily create a missing Map value.

javascript Your answer
const value = settings.getOrInsertComputed("theme", key => makeTheme(key));

Press Ctrl⌘Enter to check your answer

Challenge 11

Associate metadata with an object only when that object is not already cached.

javascript Your answer
const metadata = cache.getOrInsert(element, createMetadata(element));

Press Ctrl⌘Enter to check your answer

Challenge 12

Lazily create metadata for an uncached object.

javascript Your answer
const metadata = cache.getOrInsertComputed(element, key => createMetadata(key));

Press Ctrl⌘Enter to check your answer