将字段添加到JS数组

时间:2014-04-05 19:18:59

标签: javascript arrays prototypejs to-json

我添加了一个字段" max"到JS数组原型。当我对数组进行字符串化时,我很难看到这个添加。我试图覆盖toJSON功能,但无济于事。

Array.prototype.max = 0;
Array.prototype.toJSON = function(){
    var o = this;
    o.max = this.max;
    return o;
};

var a = [1,2,3];
a.max = 10;

console.log(JSON.stringify(a));
//'[1,2,3]'

我想避免像{array_field:a,max_field:max}这样的东西,只使用数组对象 - 这可能吗?我做错了什么?

1 个答案:

答案 0 :(得分:1)

这里有几个选项,它们都不会完全符合您的要求。

由于JSON数组严格限于整数键[1],因此您无法直接向下发送max的值。

您的选择包括:

  • 使用object代替array。你放弃了所有阵列魔法,但它可能对你更好。
  • 向下发送数组外部的元数据,例如包含max和数组值的配置对象
  • 在发送数组之前强制数组为max。 JSON将使用null编码未使用的数组元素。
  • 使用自定义序列化器/反序列化器。您甚至可以在JSONS +附加内容中对内容进行编码。实际上,这几乎与第二种选择相同。

[1]与JavaScript对象不同