Почему не работает код Regex validate PIN code?
Всё не так.
split разбивает строку и результатом будет массив строк. Соответственно, условие typeof arr[i] === 'number' никогда не выполнится.
Условие записано неверно и всегда будет давать true.
typeof arr[i] === 'number' & arr.length === 4 || 6эквивалентно
((typeof arr[i] === 'number') & (arr.length === 4)) || 6
& - это не логическое И, а побитовое.
forEach у вас смысла не имеет, так как он не использует значение, возвращаемое из каллбэк-функции.
В основной функции нет return'а, значит она всегда возвращает undefined.
Ну и regex'а тут нет.
Метод split кажется должен вернуть тебе массив строк. Поэтому проверка ===number не срабатывает. Приведи arr[i] к числу. Number(arr[i]). А потом делай манипуляции. Но проще было бы валидировать регулярным выражением.