JSFiddle - React, Tailwind, and code Playground

by ruslanchek

HTML

<ul id="result"></ul>

JavaScript

function parseNumber(number, gender, postfix) {
    var gender_one = 'один';

    switch (gender) {
        case 'neuter' : {
            gender_one = 'одно';
        } break;

        case 'feminine' : {
            gender_one = 'одна';
        } break;

        case 'masculine' : {
            gender_one = 'один';
        } break;
    }

    if(number == 1){
        return gender_one;
    }

    var dictionary = [
        ["", "один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь", "девять",
            "десять", "одиннадцать", "двенадцать", "тринадцать", "четырнадцать", "пятнадцать",
            "шестнадцать", "семнадцать", "восемнадцать", "девятнадцать"],
        ["", "десять", "двадцать", "тридцать", "сорок", "пятьдесят", "шестьдесят", "семьдесят", "восемьдесят", "девяносто"],
        ["", "сто", "двести", "триста", "четыреста", "пятьсот", "шестьсот", "семьсот", "восемьсот", "девятьсот"],
        ["тысяч|а|и|", "миллион||а|ов", "миллиард||а|ов", "триллион||а|ов"]
    ];

    function getNumber(number, limit) {
        var temp = number.match(/^\d{1,3}([,|\s]\d{3})+/);
        if (temp) return temp[0].replace(/[,|\s]/g, "");
        temp = Math.abs(parseInt(number, 10));
        if (temp !== temp || temp > limit) return null;
        return String(temp);
    }

    function setEnding(variants, number) {
        variants = variants.split("|");
        number = number.charAt(number.length - 2) === "1" ? null : number.charAt(number.length - 1);
        switch (number) {
            case "1":
                return variants[0] + variants[1];
            case "2":
            case "3":
            case "4":
                return variants[0] + variants[2];
            default:
                return variants[0] + variants[3];
        }
    }

    function getPostfix(postfix, number) {
        if (typeof postfix === "string" || postfix instanceof String) {
            if (postfix.split("|").length < 3) return " " + postfix;
            return " " +...