Если я объявлю регулярное выражение как константу, оно все равно будет чистой функцией?
Функция, которая использует константу, все еще является чистой функцией. Это «просто еще один функциональный параметр». Подумайте о постоянном эквиваленте композиции скрытых функций.
псевдокод:
func a(c) {
return func b(p) {
return c + p
}
}
const c1 = 5
a(c1)(6) = 11
a(c1)(7) = 12
...
Проблема с вашей функцией - побочный эффект DOM. При внесении изменений в DOM другой процесс может изменить и те же элементы. Это не функциональный подход. Узнайте больше о том, как бороться с побочными эффектами на DOM с более функциональным подходом.
Кроме того, для вашего случая используйте карту вместо foreach.