我在AngularJS中工作,并试图将数据发送到我的后端。[Object,Object]和Array之间的区别(2)
我注意到,当我在服务变量具有这种结构test = [Object, Object]
它被传递到我的ASP.NET后台一个List<String>
,但我已经通过test = Array(2)
到我的后端麻烦。
我看到我正在调试的格式,并在变量上设置断点。
这两者之间有区别吗?由于
我在AngularJS中工作,并试图将数据发送到我的后端。[Object,Object]和Array之间的区别(2)
我注意到,当我在服务变量具有这种结构test = [Object, Object]
它被传递到我的ASP.NET后台一个List<String>
,但我已经通过test = Array(2)
到我的后端麻烦。
我看到我正在调试的格式,并在变量上设置断点。
这两者之间有区别吗?由于
第一种情况:
var x = { foo: "bar", qux: 123 };
var y = { baz: "123", yeen: { arr: [1,2,3] };
var test = [ x, y ]; // [Object,Object]
对于第二种情况,请参阅MDN的文档Array()
:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array
new Array(arrayLength)
如果唯一的参数传递给Array构造函数是0到
2^32 - 1
(含)之间的整数,这会返回一个新的J avaScript数组的长度属性设置为数字
所以你的第二个案例代码大概是:
var test = Array(2);
...这实际上计算结果为[undefined,undefined]
),但是.NET(因此ASP.NET)没有“undefined
”的概念(与null
比较),所以此值不能序列化为JSON(因为JSON不允许undefined
值) - 所以这解释了为什么它失败。
如果一个“空”数组元素在你的应用程序有意义的,你应该使用明确的null
值而不是 - 最好是使用数组字面像这样:
var ret = [ null, null ];
或者,如果要素的数量是可变的:
var ret = Array(123); // This creates a 123-sized array, where every element is undefined. This cannot be serialized to JSON
ret.fill(null); // This explicitly sets every element to a null value. The array can now be serialized to JSON.
你想在这里做什么?只需初始化长度为== 2的数组? – sethro
显然,一个包含两个函数,而另一个不包含任何内容。 – Bergi
请显示您的真实代码并显示您的[实际问题](https://meta.stackexchange.com/q/66377)。 – Bergi