2016-08-11 21 views
2

私が作成した特定のオブジェクトに対して固有のキーを作成する必要があります(React key propに必要)。ここでkeyはランダムな文字列または数字ですが、生成されるたびに一意でなければなりませんプログラムの生涯で。JavaScriptで一意の番号を取得する方法

私はnew Date().getTime()をキーとして使用しようとしましたが、ループ内で複数のオブジェクトに同じキーが割り当てられている問題が発生しました。

プログラムが実行されている限り、呼び出しごとにまったく固有のものを返す関数がありますか、独自のカウンタを実装する必要はありますか?

あなたはUUIDを作成することができます
+0

カウンタを実装するだけで、GUIDを生成するよりもずっと簡単になり、パフォーマンスが向上します。 idが必要なときは、 'nextKey()'を呼び出すだけです。) – nnnnnn

+0

I(){return i ++;}}あなたのアプローチを拡張しています!これを試すことができます。 'function getUUID(){ var n = new Date()。getTime(); var m = new Date(); var o = m.getMilliseconds(); var uuid = n * o; return uuid; } ' –

+0

@MavenMaverick - OPのコードが機能しないのと同じ理由で動作しません。関数を同じミリ秒で何度も呼び出すと、同じ結果が得られます。 – nnnnnn

答えて

1

function guid() { 
    function s4() { 
    return Math.floor((1 + Math.random()) * 0x10000) 
     .toString(16) 
     .substring(1); 
    } 
    return s4() + s4() + '-' + s4() + '-' + s4() + '-' + 
    s4() + '-' + s4() + s4() + s4(); 
} 

オリジナルの答え:https://stackoverflow.com/a/105074/5109911

選択肢:それはだけにして、 "限り、プログラムが実行されている" のために一意である必要がある場合 https://jsfiddle.net/briguy37/2MVFd/

関連する問題