Javascript 向JS数组添加字段
我在JS阵列原型中添加了一个字段“max”。当我字符串化数组时,我很难看到这个添加。我试图覆盖toJSON函数,但没有成功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,
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
- 在向下发送阵列之前,强制阵列长时间处于
。JSON将使用max
对未使用的数组元素进行编码null
- 使用自定义序列化程序/反序列化程序。您甚至可以在
+附加功能中编写代码。事实上,这与第二种选择几乎相同JSONS
[1] 与JavaScript对象不同这里不太清楚您想做什么?你知道
prototype
做什么,以及Array
构造函数是什么吗?知道。我需要一个额外的数组字段。这在服务器上按预期工作,但当我尝试“字符串化”阵列并将其发送到客户端时,我的附加字段被忽略。您没有向阵列添加任何内容,只向阵列构造函数原型添加内容?我希望所有阵列都有一个“max”字段,我可以通过“.max”访问。我在本地完成了这项工作。问题在于,在将“数组对象”转换为JSON字符串时,远程反射修改后的“数组对象”,这令人失望。我想我将把数组包装成一个对象。