ルックアップ オブジェクトに一意の値を持たせたい場合は、次のようにすることができます。
ルックアップ オブジェクトの作成
var lookup = {};
ハッシュコード関数の設定
function getHashCode(obj) {
var hashCode = '';
if (typeof obj !== 'object')
return hashCode + obj;
for (var prop in obj) // No hasOwnProperty needed
hashCode += prop + getHashCode(obj[prop]); // Add key + value to the result string
return hashCode;
}
物体
var key = getHashCode({ 1: 3, 3: 7 });
// key = '1337'
lookup[key] = true;
配列
var key = getHashCode([1, 3, 3, 7]);
// key = '01132337'
lookup[key] = true;
その他のタイプ
var key = getHashCode('StackOverflow');
// key = 'StackOverflow'
lookup[key] = true;
最終結果
{ 1337: true, 01132337: true, StackOverflow: true }
getHashCode
オブジェクトまたは配列が空の場合は値を返さないことに注意してください
getHashCode([{},{},{}]);
// '012'
getHashCode([[],[],[]]);
// '012'
これは @ijmacd ソリューションに似ていますが、依存関係getHashCode
がないだけです。JSON