mirror of https://gitee.com/antv-l7/antv-l7
15 lines
368 B
JavaScript
15 lines
368 B
JavaScript
module.exports = function (random, alphabet, size) {
|
|
var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1
|
|
var step = Math.ceil(1.6 * mask * size / alphabet.length)
|
|
var id = ''
|
|
|
|
while (true) {
|
|
var i = step
|
|
var bytes = random(i)
|
|
while (i--) {
|
|
id += alphabet[bytes[i] & mask] || ''
|
|
if (id.length === +size) return id
|
|
}
|
|
}
|
|
}
|