I feel your pain, just keep going. What I’ve noticed on my coding journey so far (and I’m not even half way there I think) is that the learning process happens in waves.
You start off with simple string methods, math operations, and when it comes to arrays, you solve everything with for loops. It works for a while, then you discover array methods (map/filter/reduce to name the most famous).
In the beginning, using them is tedious and requires a lot of thinking, but after a while you use them effortlessly and you see your code becoming much more concise and readable.
Until you hit the next wall. You’re becoming aware of function scope and develop an understanding for closures. Beginner coders tend to throw all their variables into the global scope at the top of their script, and their functions usually do all kinds of stuff at once. Getting a feeling for the principles of functional programming, splitting things up depending on what the function does and which parts of the code are affected by it, takes time. Again, it’s tedious at the start, but after a while, you’ll start using closures intentionally, and you’ll also know why you’re doing it.
Next stop - object creation, the new operator, this keyword, the principles of classes, understanding the prototype chain. Even if you don’t really go for an object orientated programming style, those things will help you to get a better grasp of many concepts (and quirks) of JavaScript.
Meanwhile, you’ve picked up a lot about the DOM and how to manipulate it, and at that point, you can probably do almost anything you want to provide the interactivity you need on your website - except communicate with the server, and that next wave is a big one. Async/await, promises, and so on. You’ll learn about the call stack, XHTTP requests, also file operations.
If you think you’re moving too slow, I recommend reading your older scripts from time to time. It’ll throw your progress in your face.