JSFiddle - React, Tailwind, and code Playground

by Aleksey Karagodnikov

JavaScript

// @dict_type - Массив словарей (по умолчанию - латиница)
    // Все элементы массива должны быть строкового типа
    // В качестве элементов массива могут быть переданы следующие значения:
    //    а) Ссылка на один [или несколько] из встроенных словарей
    //       Доступны: 'latin', 'cyrillic', 'digits'
    //    б) пользовательский словарь (набор [или наборы] любых символов)    
    // @length - Длина генерируемой строки (по умолчанию 5 символов)    
    // @sensetive - В обоих регистрах? (true | false, по умолчанию - false);
    // Функция возвращает сгенерированную строку или false в случае неудачи

    function generateSeed(dict_type, length, sensetive) {
        dict_type = typeof dict_type !== 'undefined' ? dict_type : ['latin'];
        length = typeof length !== 'undefined' ? length : 5;
        sensetive = typeof sensetive !== 'undefined' ? !! sensetive : false;
        if (checkArray(dict_type) && typeof length === 'number') {
            var text = "",
                dict = "",
                def = "",
                custom = "",
                possible = [];
            possible.latin = "abcdefghijklmnopqrstuvwxyz";
            possible.cyrillic = "абвгдеёжзийклмнопрстуфхцчъыьэюя";
            possible.digits = "0123456789";
            for (j = 0; j < (dict_type.length); ++j) {
                def = possible[dict_type[j]];
                custom = dict_type[j];
                if (typeof def !== 'undefined') {
                    dict += (sensetive) ? def + def.toUpperCase() : def;
                } else {
                    dict += (sensetive) ? custom + custom.toUpperCase() : custom;
                }
            }
            for (i = 0; i < length; ++i) {
                text += dict.charAt(Math.floor(Math.random() * dict.length));
            }
            return (text === "") ? false : text;
        } else {
            return false;
        }
    }


    //Вспомогательная функция для проверки входного словаря
    function...