4

我需要知道是否有任何 JSON 实现可以让我满意地处理稀疏数组。我已经看到了这个问题:如何在 JSON 中表示稀疏数组?但是使用对象而不是数组对我来说不是一个选择;我需要一个数组。

我的最低要求是实现用“未定义”填补任何空白。否则,我会在 JSON 编码之前编写自己的防御性代码来填补空白。

4

2 回答 2

5

不可能。忘记实现,这在规范中是不允许的。

http://json.org/

数组仅由值定义。对象用于索引/键有意义时。

于 2010-04-16T19:13:13.217 回答
2

您可以使用属性名称为索引且属性值为值的对象,然后通过中间函数运行它来创建稀疏数组吗?

function getSparseArray(obj) {
  var ary = [];
  for (prop in obj) {
    var i = parseInt(prop,10);
    if (!isNaN(i)) {
      ary[i] = obj[prop];
    }
  }
  return ary;
}

你会发送类似的东西

{ "5":"Five", "11":"Eleven", "99":"Ninety-Nine"}

并取回一个仅填充了三个值的数组:

ary[5] = "Five"
ary[11] = "Eleven"
ary[99] = "Ninety-Nine"
ary[0] = 'undefined'
ary[98] = 'undefined'
etc.

ary这里的长度为 100,但在您的意义上它将是一个“稀疏”数组。

于 2010-04-16T19:16:59.023 回答