Пара ошибок:
for .. in
перебирает имена свойств объекта ('a', 'b', 'c', ...)
а тут требуются значения (10, 20, 30, ...) – значения перебирает for .. of
- значения — числа. Чтобы забрать первую букву (цифру) нужна строка. Поэтому надо каждое значение сначала сделать строкой. Например, методом
toString()
:const num = 10; // число
num.toString() // результат "10" – строка текста
Поправьте эти два момента и всё наладится.
Можно и в одну
нечитабельную строку:
Object.values(obj).reduce((acc, c) => acc + c.toString().match(/^[12]/), 0) // 2
но здесь используется тяжёлый механизм регулярных выражений, хотя вполне можно без него; и неочевидное приведение типа Boolean к Number ради краткой записи.