Something I've started doing along with the functional is fallback assignments and relying on Set operations to be idempotent. This can tidy up by removing a lot of excess conditionals at the cost of some extra operations that are actually VERY fast so in a most cases prob won't be a problem.
I was so surprised, since I had learned the other way first that it is actually easier to teach functional approaches with teenagers.
arr.map(x => x2) was abundantly clearer than
const newArr = [] for(let i, i < arr.length, i++) { newArr.push(arr[i]2) }
And to be perfectly honest, I might have goofed the for loop.