Как преобразовать число в число прописью (строку) в javascript?

Необходимо создать функцию, которая принимает число как аргумент и выводит данное число прописью (строку)? Можно ли это сделать не используя regExp? В диапазоне чисел от 0 до 1000.

Пример: Ввод 245 Вывод 'Двести сорок пять'


Ответы (2 шт):

Автор решения: stylok

Если число привести к строке, то можно узнать необходимый минимум для написания этой функции.

let str = 14365670;
// например так
str = String(str); 

console.log('length = ',str.length)
for (let i = 0; i < str.length; i++) {
    console.log(str[i]);
}

А дальше дело техники :)

→ Ссылка
Автор решения: Nikita

Готовая функция

function numToPr(number){
    const
        h = ['сто', 'двести', 'триста', 'четыреста', 'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот'],
        t = ['', 'двадцать', 'тридцать', 'сорок', 'пятьдесят', 'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'],
        o = ['один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять'],
        p = ['одиннацать', 'двенадцать', 'тринадцать', 'четырнадцать', 'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать'];
    let str = number.toString(), out = '';

    if(str.length == 1) return o[number-1];
    else if(str.length == 2){
        if(str[0] == 1) out = p[parseInt(str[1])-1];
        else out = (t[parseInt(str[0])-1] + ((str[1]!='0')?(' ' + o[parseInt(str[1])-1]):''));
    }
    else if(str.length == 3){
        out = (h[parseInt(str[0])-1] + ((str[1]!='0')?(' ' + t[parseInt(str[1])-1]):'') + ((str[2]!='0')?(' ' + o[parseInt(str[2])-1]):''));
    }

    let arr = out.split('');
    arr[0] = arr[0].toUpperCase();
    out = arr.join('');
    return out;
}

console.log(numToPr(245));

→ Ссылка