Как можно случайным образом сгенерировать шестнадцатеричный код длиной 160 битов (20 байтов) в виде строки (такой же длины, как у Git хешей фиксации) для использования в качестве уникального идентификатора?
Это должно сработать:
let characters = "0123456789abcdef" let str = "" for(let i = 0; i < 40; i++){ str += characters[Math.floor(Math.random() * 16)] } console.log(str)
В современном браузере есть cyrpto.getRandomValues, поддержка довольно хорошая. -> https://caniuse.com/#feat = getrandomvalues
cyrpto.getRandomValues
Таким образом, вы можете сделать это ->
const a = [...crypto.getRandomValues(new Uint8Array(20))].map(m=>('0'+m.toString(16)).slice(-2)).join(''); console.log(a);