Javascript 向JS数组添加字段

Javascript 向JS数组添加字段,javascript,arrays,prototypejs,to-json,Javascript,Arrays,Prototypejs,To Json,我在JS阵列原型中添加了一个字段“max”。当我字符串化数组时,我很难看到这个添加。我试图覆盖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,

我在JS阵列原型中添加了一个字段“max”。当我字符串化数组时,我很难看到这个添加。我试图覆盖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\u field:a,max\u field:max}的事情,而只使用array对象——这可能吗?我做错了什么?

这里有几个选项,没有一个能完全满足你的要求

由于JSON数组严格限制为整数键[1],因此不能直接向下发送
max
的值

您的选择包括:

  • 使用
    对象
    而不是
    数组
    。你失去了所有的阵法魔法,但它可能对你更有效
  • 在数组外部向下发送元数据,例如包含
    max
    和数组值的配置对象
  • 在向下发送阵列之前,强制阵列长时间处于
    max
    。JSON将使用
    null
    对未使用的数组元素进行编码
  • 使用自定义序列化程序/反序列化程序。您甚至可以在
    JSONS
    +附加功能中编写代码。事实上,这与第二种选择几乎相同

[1] 与JavaScript对象不同

这里不太清楚您想做什么?你知道
prototype
做什么,以及
Array
构造函数是什么吗?知道。我需要一个额外的数组字段。这在服务器上按预期工作,但当我尝试“字符串化”阵列并将其发送到客户端时,我的附加字段被忽略。您没有向阵列添加任何内容,只向阵列构造函数原型添加内容?我希望所有阵列都有一个“max”字段,我可以通过“.max”访问。我在本地完成了这项工作。问题在于,在将“数组对象”转换为JSON字符串时,远程反射修改后的“数组对象”,这令人失望。我想我将把数组包装成一个对象。