Почему не воспринимает «0» за цифру?
0 приводится к false же.
Вместо  if(Number(item)) можно написать if(Number.isInteger(item))
Или вообще выбросить этот цикл и сделать так:let x = $policy.val().replace(/[^\d]/g, '') // строка в которой только цифры
if (x.length === ... )
Number('0'), как ни странно, возвращает 0. Условие if (0) не выполнится, сами понимаете...