Work through focused JavaScript exercises from approachable foundations to more demanding problem-solving patterns.
Start with one core idea at a time and make the basic moves feel automatic.
Return an object whose keys are order statuses and whose values preserve the matching orders in their original order.
Return a privacy-friendly display value for a valid email: retain the first local-part character, replace the remaining local characters with asterisks, and keep the domain unchanged. Return null for malformed input.
Return a new list of lower-case, trimmed tags with empty values removed and duplicates discarded while preserving first-seen order.
Return the words in a sentence in reverse order without reversing each word.
Combine concepts, validate inputs, and make practical design decisions.
Convert a filter object into a query string, omitting null, undefined, empty strings, and false values while keeping zero.
Return the total price in cents for cart lines. Ignore non-positive quantities and avoid floating-point money calculations.
Group transactions by category and calculate an exact total for every category.
Work with edge cases, maintainability, and the tradeoffs found in production code.
Return true when a proposed time slot overlaps an existing slot. Time ranges use half-open intervals: an event ending at 10:00 does not conflict with one starting at 10:00.
Implement a scheduler that starts at most limit promise-returning tasks at a time and resolves results in input order.
Implement a reducer for idle, loading, success, and error request states. Ignore stale response actions whose requestId does not match the active request.
Return to the free lessons, editable examples, and quick checks whenever an exercise exposes a gap.
Merge two ascending arrays of numbers into one ascending array without sorting the final result and without changing either input array.