2012-02-09 6 views
4

"複雑なもの"が数字や文字列の配列である "複雑なもの"のセットが必要です。複雑なオブジェクト/アレイをキーワークとして「期待通りに」使用していますか?

これにプレーンオブジェクトを使用できますか?

例:

var set = {}; 
set[[1,2]] = 1; 
set[[1,2]] = 1; 
set[["string", "another string"]] = 1; 
set[["string", "another string"]] = 1; 

今、私は2つのキー/値ペアがsetであることを期待する、とChromeでのテストは、それがそうであることを確認します。この動作に頼っても安全ですか?

答えて

2

まったくありません。

オブジェクトキーはのみは文字列または数字です。
複合オブジェクトはtoString()を呼び出して文字列に変換されます。

あなたはspecでこれを見ることができます:

がpropertyNameStringは、ToStringメソッド(propertyNameValue)とします。

したがって、set[ [1,2] ]set["1,2"]と同じです。

+0

これはChromeでうまくいくのは偶然のことですか? –

+1

それは動作しますが、あなたが思うように動作しません。 – SLaks

+0

toString()の信頼性が十分でない可能性があるため、代わりにいくつかのシリアライズ関数を考慮する必要があります。あなたのインデックスは依然として値に基づいていて、オブジェクトの参照には基づいていないので、それらは十分ではないかもしれません。 – caleb

関連する問題