我需要知道是否有任何 JSON 实现可以让我满意地处理稀疏数组。我已经看到了这个问题:如何在 JSON 中表示稀疏数组?但是使用对象而不是数组对我来说不是一个选择;我需要一个数组。
我的最低要求是实现用“未定义”填补任何空白。否则,我会在 JSON 编码之前编写自己的防御性代码来填补空白。
我需要知道是否有任何 JSON 实现可以让我满意地处理稀疏数组。我已经看到了这个问题:如何在 JSON 中表示稀疏数组?但是使用对象而不是数组对我来说不是一个选择;我需要一个数组。
我的最低要求是实现用“未定义”填补任何空白。否则,我会在 JSON 编码之前编写自己的防御性代码来填补空白。
您可以使用属性名称为索引且属性值为值的对象,然后通过中间函数运行它来创建稀疏数组吗?
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,但在您的意义上它将是一个“稀疏”数组。