Какой метод массива более затратный forEach или reduce?
И как определить сложность алгоритма (то есть, допустим, есть 2 решения одной задачи и как понять, что одно лучше другого и у одного одна сложность, а у другого какая-то другая)?
У forEach и reduce разные задачи: первый метод выполняет функцию для каждого элемента массива, второй выполняет функцию для каждого элемента массива и возвращает значение
Во-первых, это зависит от внутренней реализации. А сама реализация зависит от движка.
Во-вторых, сложность будет зависеть от содержания, от того, что вы делаете внутри этих функций. То, есть по сложности самой функции нельзя сказать что она лучше другой во всех ситуациях с любыми задачами.