Как представить разреженный массив в JSON? - PullRequest
3 голосов
/ 14 ноября 2009

У меня есть разреженный массив, который я хочу представить в JSON. Например:

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

Как я могу это сделать? Могу ли я сделать это?

Ответы [ 2 ]

7 голосов
/ 14 ноября 2009

Вы можете представить его как простой объект:

{
  "-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];
  }
}

И если вы хотите получить доступ к определенному элементу по ключу, вы также можете использовать здесь квадратную скобку accessor :

obj['-10']; // 100

Обратите внимание, что я использую метод hasOwnProperty внутри цикла for...in, чтобы предотвратить итерацию свойств, определенных на более высоких уровнях цепочки прототипов, что может вызвать проблемы и неожиданное поведение ... подробнее здесь .

1 голос
/ 14 ноября 2009

Да, вы можете. Имя члена объекта JSON - это строки. Строки могут содержать любое значение в кодировке UTF-8:

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