Как отметили несколько человек, передача результата Math.random()
непосредственно в .string(36)
имеет несколько проблем.
У него плохая случайность. Количество сгенерированных символов варьируется, и в среднем зависит от хитрых деталей работы чисел с плавающей запятой в Javascript. Кажется, это работает, если я пытаюсь сгенерировать 11 символов или меньше, но не с более чем 11. И это не гибко. Нет простого способа разрешить или запретить определенные символы.
У меня есть компактное решение, у которого нет этих проблем, для тех, кто использует lodash:
_.range(11).map(i => _.sample("abcdefghijklmnopqrstuvwxyz0123456789")).join('')
Если вы хотите разрешить определенные символы (например, заглавные буквы) или запретить определенные символы (например, неоднозначные символы, такие как l
и 1
), измените приведенную выше строку.