我在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