コード書いてるとたまに被らない値が必要なことがあります。
例えばDOMを生成する際にIDが必要だけど被らないようにしないといけない、ユーザ情報に利用する、など・・・
逆にいうとそういった時ぐらいにしか使わないので毎度忘れてしまいます。
そんなわけでメモっておきます。
※UUIDの仕様にそってないものはUUIDとして書くべきじゃない、という指摘があったので修正しました。
考え方
ユニークなIDをつくる時、乱数で生成すると被る可能性が若干あり、ちょっと不安です。
ユニークな文字列をさくっと作りたい時、Dateから生成すると被らない乱数を手軽に生成することができます。
ソース
getUniqueStr
function getUniqueStr(myStrong){
var strong = 1000;
if (myStrong) strong = myStrong;
return new Date().getTime().toString(16) + Math.floor(strong*Math.random()).toString(16)
}
マイクロ秒単位で乱数が変化するので大丈夫だと思うのですが、もし万が一かぶってしまった場合のことを考えて、念のため乱数を最後につけています。
使い方
シンプルです。乱数の桁を増やしたい場合は引数に値を指定します。
var uuid = getUniqueStr()
使いたいときにぺたっとどこかにはってもらえばと思います。
追記
いろんな人に読んでもらえるので typescript に書き換えたものを追記しておきます。
function getUniqueStr(myStrong?: number): string {
let strong = 1000;
if (myStrong) strong = myStrong;
return (
new Date().getTime().toString(16) +
Math.floor(strong * Math.random()).toString(16)
);
}