Писал для себя получился очень работоспособный вариант.
function rusNumberMutal(value, once, twice, more) { const mod10 = value % 10, mod100 = value % 100; switch (true) { case mod100 == 11 || mod100 == 12 || mod100 == 13 || mod100 == 14 : return [value, more]; case mod10 == 1 : return [value, once]; case mod10 == 2 || mod10 == 3 || mod10 == 4: return [value, twice]; default: return [value, more]; } }
Тестовая строка в виде пирогов `1002 пирога`
Array(1200).fill(null) .map((_,x) => rusNumberMutal(x, "пирог", "пирога", "пирогов")) .forEach(res => console.log(res.join(" ")));