Функция-генератор уникального значения
JavaScript код функции-генератора с подробными комментариями:
JavaScript
/**
* Функция для генерации случайного кода заданной длины
* @param {Object} options - Объект с параметрами генерации
* @param {number} options.length - Длина генерируемого кода
* @param {boolean} options.letters - Включать ли буквы (true) или только цифры (false)
* @returns {Object} Объект с параметрами генерации и сгенерированным кодом
*/
function RandomCode(options) {
// Деструктуризация параметров из объекта options
let { length, letters } = options;
// Переменная для хранения сгенерированного кода
let randomCode = "";
// Трехмерный массив с наборами символов для генерации
let dataSymbols = [
// [0] - Массив заглавных латинских букв (A-Z)
[
"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
"N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
],
// [1] - Массив строчных латинских букв (a-z)
// Примечание: есть опечатка - "W" должно быть "w"
[
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
"n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"
],
// [2] - Массив цифр (0-9)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
];
/**
* Вспомогательная функция для генерации случайного числа в диапазоне
* @param {number} min - Минимальное значение (включительно)
* @param {number} max - Максимальное значение (включительно)
* @returns {number} Случайное целое число в заданном диапазоне
*/
function rand(min, max) {
return Math.floor(min + Math.random() * (max + 1 - min)); // Генерируем случайное число
}
// Проверяем, нужно ли включать буквы в код
if (letters) {
// Генерируем код с использованием букв и цифр
for (let i = 0; i < length; i++) {
// Случайно выбираем один из трех массивов символов (0-заглавные, 1-строчные, 2-цифры)
let symArr = dataSymbols[rand(0, 2)];
// Из выбранного массива берем случайный символ и добавляем к коду
randomCode += symArr[rand(0, symArr.length - 1)] + "";
}
} else {
// Генерируем код только из цифр
for (let i = 0; i < length; i++) {
// Используем только массив цифр (индекс 2)
let symArr = dataSymbols[2];
// Из массива цифр берем случайную цифру и добавляем к коду
randomCode += symArr[rand(0, symArr.length - 1)] + "";
}
}
// Возвращаем объект с исходными параметрами и сгенерированным кодом
return { length, letters, randomCode };
}
// Пример использования функции: генерируем код длиной 10 символов с буквами
console.log(RandomCode({ length: 10, letters: true }));Краткое описание функциональности
Данная функция представляет собой универсальный генератор случайных кодов с гибкой настройкой:
Ключевые особенности:
- Параметризованная генерация: функция принимает объект с настройками длины и типа символов
- Два режима работы:
letters: true— генерирует код из букв (заглавных и строчных) + цифрletters: false— генерирует код только из цифр
- Возвращаемый объект: содержит исходные параметры и сгенерированный код
Структура данных:
- Использует трехмерный массив для группировки символов по типам
- Заглавные буквы (A-Z), строчные буквы (a-z), цифры (0-9) хранятся отдельно
Алгоритм:
- Извлекает параметры длины и типа символов
- В зависимости от флага
lettersвыбирает стратегию генерации - В цикле случайным образом выбирает символы и формирует итоговый код
- Возвращает объект с результатами