6

JSONで表現したいスパース配列があります。例えば:

  -10 => 100
   -1 => 102
    3 => 44
   12 => -87
12345 => 0

これどうやってするの?これはできますか?

4

2 に答える 2

9

単純なオブジェクトとして表すことができます:

{
  "-10" : 100,
  "-1" : 102,
  "3" : 44,
  "12" : -87,
  "12345" : 0
}

単純なオブジェクトになるため、配列と同じ方法で反復することはできませんが、次のfor...inステートメントを使用できます。

for (var key in obj) {
  if (obj.hasOwnProperty(key)) {
    var value = obj[key];
  }
}

また、特定の要素にキーでアクセスしたい場合は、ここでも角括弧プロパティ アクセサーを使用できます。

obj['-10']; // 100

hasOwnPropertyループ内でメソッドを使用していることに注意してfor...inください。これは、プロトタイプ チェーンの上位レベルで定義されたプロパティの反復を防ぐためです。これにより、問題や予期しない動作が発生する可能性があります... 詳細はこちら.

于 2009-11-14T08:22:31.123 に答える
2

はい、できます。JSON オブジェクトのメンバー名は文字列です。文字列は、UTF-8 でエンコードされた任意の値を保持できます。

{
  "-10"   : 100,
  "-1"    : 102,
  "3"     : 44,
  "12"    : -87,
  "12345" : 0
}
于 2009-11-14T08:20:25.683 に答える