Код ревью
Код работает, но не знаю костыльный ли он
«Работает — не трожь!», — говорит народная мудрость. Но тут, боюсь, не работает, так как в заголовке вопроса вы пишете про 1, 2, 5. Но в решении сравниваете с 1, 2 и 6.
Можно улучшить код, избавившись, следуя принципу DRY (не повторяй себя), от повторений:
// вместо
if(currentElem[0] == 1 || currentElem[0] == 2 || currentElem[0] == 6) {
// можно
if ([1, 2, 5].includes( +currentElem[0])) {
Хорошо также использовать встроенные методы JS для итерации по массиву:
// вместо
for(let i = 0; i < arr.length; i++) {
let currentElem = arr[i];
// можно
arr.forEach((currentElem) => {
// что-то делать с переменной currentElem
})
Наконец, вместо вывода в консоль на каждой итерации очередного значения, лучше их собрать в массив и вернуть его из функции как результат.
Мой вариант решения
// получаем 1-ю цифру делением на 10 снова и снова
// работает только для положительных чисел
const first = (x) => x < 10 ? x : first(Math.floor(x / 10));
const valid = [1, 2, 5]; // допустимые первые цифры
const result = [10, 20, 30, 50, 235, 3000]
.filter((item) => valid.includes(first(item)));
console.log(result); // [10, 20, 50, 235]