Функция-генератор уникального значения

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) хранятся отдельно

Алгоритм:

  1. Извлекает параметры длины и типа символов
  2. В зависимости от флага letters выбирает стратегию генерации
  3. В цикле случайным образом выбирает символы и формирует итоговый код
  4. Возвращает объект с результатами