現在、私はJavascriptプロジェクトで作業しています。ここでは、空でない別個の正の整数の配列に対して一意のgroup_ID
を素早く生成する必要があります。この場合Javascript - 異なる正の整数の配列のバイナリ表現を素早く構築する方法
var a = [1, 2, 5]
、I 2進数使用して、この配列を同定したい:0b11001
(すなわち、2進数の要素1,2、及び5は、グループ内にあり、他の要素が存在しないことを言います)。ここでは、順序は関係ありませんので、私は[2, 1, 5]
または[5, 1, 2]
について同じgroup_ID === 0b11001
を得るでしょう。
ネイティブJSまたはアンダースコア/ロダッシュのいずれかを使用してこのIDを生成する簡単な方法があるのでしょうか?
さらにmoderner 'a.reduce((P、C)=> P | 1 <<(C - 1)、0);' – CupawnTae
ありがとうございました!私が思いついた解決策は次のとおりです: 'groupId = _.reduce(a、function(bin、s){return bin + Math。 pow(2、s-1)}、0).toString(2) 'これはStringを出力します。好奇心の外に、バイナリ数と文字列を扱うときにJSが高速になるのでしょうか? –
はいバイナリの数値が速く、ソリューションで重複がないかどうかチェックする必要がありますが、それでも53に制限されています –