JavaScript で一意の ID を生成するいくつかの方法

JavaScript で一意の ID を生成するいくつかの方法

考えられる解決策

1. Math.randomは[0,1)の範囲の乱数を生成します。

//今回は生成された値を実行しました: 0.5834165740043102 
Math.random();

2. 現在のタイムスタンプを取得する Date.now

//タイムスタンプは1482645606622です
日付.now();

3. 小数を他の基本文字列に変換する Number.toString

// 1482645606622 を 2 進数に変換: 10101100100110100100001001000011011110 
(1482645606622).toString(2);

//16進数に変換: 159349090de MongoDB の ObjectID は 24 桁の 16 進数です (1482645606622)。toString(16);

//サポートされる最大基数は 0-9a-z の文字を使用した 16 進数です: ix48wvry 
(1482645606622).toString(36);

改良版1: 乱数 + toString()

1. 乱数バージョン

/**
 * 一意のIDを生成する
 */
関数 GenNonDuplicateID(){
 Math.random().toString() を返す
}

//0.1283460319177394 に似た ID を生成します
重複IDを生成()

2. 乱数バージョン 16進数バージョン

/**
 * 一意のIDを生成する
 */
関数 GenNonDuplicateID(){
 Math.random().toString(16) を返す
}

//関数は0.c1615913fa915のようなIDを生成します
重複IDを生成()

3. 乱数バージョン 16進数バージョン

/**
 * 一意のIDを生成する
 */
関数 GenNonDuplicateID(){
 Math.random().toString(36) を返す
}

//関数は0.hefy7uw6ddzwidkwcmxkzkt9のようなIDを生成します
重複IDを生成()

4. 乱数バージョン 16進数バージョン

/**
 * 一意のIDを生成する
 */
関数 GenNonDuplicateID(){
 Math.random().toString(36).substr(2) を返す
}

//この関数は8dlv9vabygks2cbg1spds4iのようなIDを生成します
重複IDを生成()

要約する

利点: toStringの基数変換を使用すると、より短い文字列でより広い範囲を表すことができます。

デメリット: 乱数を ID として使用すると、使用回数が増えるにつれて必然的に同じ ID が 2 つ生成されます。

改良版2

1. タイムスタンプ+16進数バージョンを導入する

/**
 * 一意のIDを生成する
 */
関数 GenNonDuplicateID(){
 idStr = Date.now().toString(36) とします。
 idStr += Math.random().toString(36).substr(2)
 idStrを返す
}

//関数はix49sfsnt7514k5wpflyb5l2vtok9y66rのようなIDを生成します
重複IDを生成()

2. タイムスタンプ + 16進数バージョン + 乱数の長さ制御を導入する

/**
 * 一意のIDを生成する
 */
関数 GenNonDuplicateID(ランダム長さ){
 idStr = Date.now().toString(36) とします。
 idStr += Math.random().toString(36).substr(2,randomLength)
 idStrを返す
}

// GenNonDuplicateID(3)はix49wl2978wに似たIDを生成する
重複IDなし(3)

ただし、この方法で生成された ID の最初の数桁は常に同じになります。

3. タイムスタンプを導入 + 乱数の先頭に16進数を追加 + 乱数の長さを制御する

/**
 * 一意のIDを生成する
 */
関数 GenNonDuplicateID(ランダム長さ){
 Number(Math.random().toString().substr(2,randomLength) + Date.now()).toString(36) を返します。
}
//GenNonDuplicateID() は rfmipbs8ag0kgkcogc に似た ID を生成します。
重複IDを生成()

要約する

タイムスタンプを使用するだけで、複数の人が同時に同じデータにアクセスできるようになります。乱数を追加することで一意性を実現できます。さらに、長さをカスタマイズできるため、UUID はより柔軟になります。

要約する

ユニバーサルソリューション:

/**
 * 一意のIDを生成する
 * @param { 数値 } ランダム長さ 
 */
関数 getUuiD(ランダム長さ){
 Number(Math.random().toString().substr(2,randomLength) + Date.now()).toString(36) を返します。
}

上記は、JavaScript でユニーク ID を生成するいくつかの方法の詳細です。JavaScript でユニーク ID を生成する方法の詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • グローバルに一意な識別子 (GUID、UUID) を生成する Javascript メソッド
  • extjsの各コンポーネントには一意のIDが必要です。そうでない場合はエラーが発生します。

<<:  Linux 占有ポートの強制解放と Linux ファイアウォールのポート開放方法の詳しい説明

>>:  MySQLでMyISAMストレージエンジンをInnodbに変更した操作記録のまとめ

推薦する

JS上級編ES6の6つの継承方法

目次1. プロトタイプチェーン継承2. コンストラクタによる継承3. 組み合わせ継承4. プロトタイ...

登録ページを実装するためのJS、CSS、HTML

HTML と CSS で実装された登録ページ テンプレート。早速、コードを見てみましょう。更新: ...

Dockerはイメージ名とTAG操作の名前を変更します

docker イメージを使用する場合、以下に示すように、REPOSITORY と TAG の両方が ...

Dockerイントラネット侵入FRP展開の実装プロセスの分析

1. 設定ファイルディレクトリを作成するcd /ホームディレクトリmkdir frp最終的なディレク...

MySQL 8.0 の新機能の落とし穴と解決策についての簡単な説明 (要約)

1. ユーザーを作成して承認するMySQL 8.0 では、ユーザーの作成と認証が以前とは異なります...

JavaScriptのスタックとコピーの詳細な説明

目次1. スタックの定義2. JSスタックの調査1. スタックとヒープ2. 基本型と参照型3. 値渡...

MySQL UNION演算子の基本知識ポイント

MySQL UNION 演算子このチュートリアルでは、MySQL UNION 演算子の構文と例を紹介...

MySQL の起動時に InnoDB エンジンが無効になる問題の解決方法

問題を見つける今日、仕事中に、ローカル データベースから仮想マシン CentOS 6.6 上のデータ...

Docker 経由で CentOS コンテナを作成する手順

目次序文コンテナ間の通信を容易にするためのブリッジネットワークを作成するCentOS7イメージを使用...

MySQL ストアド プロシージャにおけるループ ステートメント (WHILE、REPEAT、LOOP) の使用法の分析

この記事では、例を使用して、MySQL ストアド プロシージャでのループ ステートメント (WHIL...

Linux で一般的なソフトウェアを設定する方法

新しいLinuxサーバーを入手する場合、通常は次の5つの構成を実行する必要があります。 HOSTAN...

CSS ハート型読み込みアニメーションのソースコードの実装

さっそく、コードをお見せしましょう。コードは非常にシンプルなので、勉強すれば理解できるようになります...

MySQLユーザー権限テーブルについての簡単な説明

MySQL はインストール時に自動的に mysql という名前のデータベースを作成します。mysql...

MySQL は制限を使用してページング例メソッドを実装します

1. 制限の基本的な実装一般的に、クライアントは、pageNo (ページ番号) と pageSize...