Comment créer un GUID (Globally Unique Identifier) en JavaScript ? Les GUID/UUID doivent comporter au moins 32 caractères et doivent rester dans la plage ASCII pour éviter des problèmes de transmission.
Je ne sais pas quelles routines sont disponibles sur tous les navigateurs, quel est le "caractère aléatoire" du générateur de nombres aléatoires intégré, comment il est généré, etc.
[Modifié le 5 mars 2023 pour refléter les dernières bonnes pratiques en matière de génération d'UUID conformes à la RFC4122]
crypto.randomUUID()
is now standard on all modern browsers and JS runtimes. However, because new browser APIs are restricted to secure contexts, this method is only available to pages served locally (localhost
or127.0.0.1
) ou via HTTPS.Pour les lecteurs intéressés par d'autres versions d'UUID, générant des UUID sur des plateformes existantes ou dans des contextes non sécurisés, il existe le
.uuid
module Il est bien testé et pris en charge.Si la méthode ci-dessus échoue, il existe également cette méthode (basée sur la réponse originale à cette question) :
Remarque : L'utilisation de n'importe quel générateur d'UUID qui s'appuie sur
les solutions basées surMath.random()
est fortement déconseillée (y compris les extraits présentés dans les versions précédentes de cette réponse) pour raisons mieux expliquées iciMath.random()
is strongly discouraged (including snippets featured in previous versions of this answer) for reasons best explained here. TL;DR: solutions based onMath.random()
TL;DR:Math.random()
ne le sont pas. fournir de bonnes garanties d'unicité.🎜UUID (Universally Unique Identifier), également connu sous le nom de GUID (Globally Unique Identifier), selon RFC 4122 est un identifiant conçu pour fournir certaines garanties d'unicité.
Bien qu'il soit possible d'implémenter un UUID conforme à la RFC avec quelques lignes de JavaScript (voir, par exemple, la réponse de @broofa ci-dessous), il existe plusieurs pièges courants :
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
", où x est l'un des [0-9, a-f] M est l'un des [1-5] et N est [8, 9, a , ou b]Math.random
)Ainsi, les développeurs écrivant du code pour les environnements de production sont encouragés à utiliser des implémentations strictes et bien entretenues telles que le module uuid.