Rumah > Soal Jawab > teks badan
Bagaimana untuk mencipta GUID (Pengecam Unik Global) dalam JavaScript? GUID/UUID hendaklah sekurang-kurangnya 32 aksara dan harus kekal dalam julat ASCII untuk mengelakkan masalah melepasinya.
Saya tidak pasti apakah rutin yang tersedia pada semua penyemak imbas, apakah "kerawak" penjana nombor rawak terbina dalam, bagaimana ia disemai, dsb.
P粉3524080382023-10-09 14:12:19
[Diedit pada 5 Mac 2023 untuk mencerminkan amalan terbaik terkini untuk menjana UUID yang mematuhi 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
or 127.0.0.1
) atau melalui HTTPS.
Untuk pembaca yang berminat dengan versi UUID lain, menjana UUID pada platform lama atau dalam konteks tidak selamat, terdapat modul uuid
ini diuji dan disokong dengan baik.
Jika kaedah di atas gagal, terdapat juga kaedah ini (berdasarkan jawapan asal kepada soalan ini):
function uuidv4() { return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16) ); } console.log(uuidv4());
Nota: Penggunaan sebarang penjana UUID yang bergantung pada Math.random()
amat tidak digalakkan (termasuk coretan yang dipaparkan dalam versi sebelumnya bagi jawapan ini) untuk sebab terbaik dijelaskan di siniMath.random()
is strongly discouraged (including snippets featured in previous versions of this answer) for reasons best explained here. TL;DR: solutions based on Math.random()
Math.random()
jangan. memberikan jaminan keunikan yang baik.🎜P粉1904436912023-10-09 13:09:03
UUID (Universally Unique Identifier), juga dikenali sebagai GUID (Globally Unique Identifier), menurut RFC 4122 ialah pengecam yang direka untuk memberikan jaminan keunikan tertentu.
Walaupun mungkin untuk melaksanakan UUID yang mematuhi RFC dengan beberapa baris JavaScript (lihat, sebagai contoh, @jawapan broofa, di bawah) terdapat beberapa perangkap biasa:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
", dengan x ialah salah satu daripada [0-9, a-f] M ialah salah satu daripada [1-5] dan N ialah [8, 9, a , atau b]Math.random
)Oleh itu, pembangun menulis kod untuk persekitaran pengeluaran digalakkan untuk menggunakan pelaksanaan yang ketat dan diselenggara dengan baik seperti modul uuid< /a>.