Easy
1. Write a function that returns the number of vowels in a string.
2. Write a function that capitalizes the first letter of every word in a sentence.
3. Find the longest word in a sentence.
4. Check whether a string contains only unique characters.
5. Convert an array of strings into a single string separated by commas.
6. Find the sum of all numbers in an array using reduce().
7. Find the difference between two arrays.
8. Group an array of objects by a specific property.
9. Remove falsy values from an array.
10. Find the most frequent element in an array.
11. Flatten a nested array by one level.
12. Write a function that returns a random integer within a given range.
13. Count how many times a specific character appears in a string.
14. Sort an array of objects by a specific property.
15. Write a function that checks whether two objects have the same keys and values.
16. Convert a JavaScript object into a query string.
17. Write a function that safely accesses a deeply nested object property.
Medium
18. Implement your own version of Array.prototype.map().
19. Implement your own version of Array.prototype.filter().
20. Implement your own version of Array.prototype.reduce().
21. Implement a debounce function.
22. Implement a throttle function.
23. Create a function that retries a failed Promise a specified number of times.
24. Write a function that runs multiple Promises and returns their results in the original order.
25. Implement a simple Promise from scratch.
26. Create a function that executes a callback only once.
27. Implement memoization for a function.
28. Write a function to deep-clone a JavaScript object.
29. Implement a custom event emitter with on(), off(), and emit() methods.
30. Create a function that converts a callback-based function into a Promise-based function.
31. Implement an LRU cache using JavaScript data structures.
32. Write a function that limits the number of concurrent asynchronous operations.
33. Implement a function that detects circular references in an object.
34. Build a simple task queue that executes asynchronous tasks one by one.
Hard
35. Implement a simplified version of Promise.all().
36. Implement a simplified version of Promise.race().
37. Implement a simplified version of Promise.allSettled().
38. Build a simple pub/sub system using JavaScript.
39. Implement a virtual DOM diffing function.
40. Build a simple autocomplete system that searches and ranks results as the user types.