Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk menjana GUID/UUID?

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粉304704653P粉304704653350 hari yang lalu507

membalas semua(2)saya akan balas

  • P粉352408038

    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()

    TL;DR:🎜 penyelesaian berdasarkan Math.random() jangan. memberikan jaminan keunikan yang baik.🎜

    balas
    0
  • P粉190443691

    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:

    • Format id tidak sah (UUID mestilah dalam bentuk "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]
    • Penggunaan sumber rawak berkualiti rendah (seperti Math.random)

    Oleh itu, pembangun menulis kod untuk persekitaran pengeluaran digalakkan untuk menggunakan pelaksanaan yang ketat dan diselenggara dengan baik seperti modul uuid< /a>.

    balas
    0
  • Batalbalas