2014-10-08 73 views
1

我有以下代碼:我應該使用JSON數組還是對象?

$.each(orderedqty, function(priority, quantity) { 

    // for each priority 

    if ($(".switch[data-priorityid=" + priority + "]").attr("data-state") == "on") { 

     // this priority is checked 

     orderedqtyArray[ priority ] = 15; 

    } else { 

     orderedqtyArray[ priority ] = 10; 

    } 

}); 

console.info(orderedqtyArray); 
console.info(JSON.stringify(orderedqtyArray)); 

問題是這樣的代碼返回:

[77:15,78:15]
[NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, 0,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,15,15]

[78:15]
[null,null,null,null,null,null,null,null,null,null,null,null, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,15]

取而代之的是漂亮的JSON :(

+0

所以你創建一個sparce陣列,當你將其轉換成JSON你......一個sparce陣列。有什麼問題? – Quentin 2014-10-08 09:46:16

+0

'orderedqty'看起來像?你能分享它 – Navin 2014-10-08 09:46:16

+0

這是一個美麗的JSON,一切都很正常:) – xShirase 2014-10-08 09:48:44

回答

6

瀏覽器的console.log輸出經過優化以刪除空值,但它是相同的數組。 JSON不能這樣做,它總是包含數組中的所有空值。

如果您希望字符串輸出看起來更像console.log,那麼您需要將其定義爲對象而不是數組。

var a = [], b = {}; 
a[5] = 1; 
b[5] = 1; 
console.log(JSON.stringify(a)); 
console.log(JSON.stringify(b)); 

輸出將是

[null, null, null, null, null, 1] 
{"5": 1} 
2

如果你只是想刪除空值,你可以做:

JSON.stringify(orderedqtyArray.filter(function(e){return e})); 
+0

但是沒有任何意義,我們應該避免獲取這些空值。 – Artemis 2014-10-08 09:52:02

+0

完美!!!感謝 – juanpscotto 2016-12-16 12:30:07

3

有些奇怪。但是你應該知道Js中數組的有趣行爲。

如果定義是這樣的:

var array = []; 
//defining item at arbitrary position 
array[5] = 5; 


// output from array will look something like this 
[undefined, undefined, undefined, undefined, 5] 

因此,也許你orderedqtyArray [重點]在一些隨機指標設定值,它會導致問題。 因爲如果你有正常的數組,它肯定會被串流化爲有效的json。

+0

+ 1,請參閱上面的我的評論 - 你正在使用整數作爲你的鍵在orderedqtyArray中,因此使JavaScript認爲你想要一個數組(或者你可以)。 – 2014-10-08 09:53:04

+0

確定它可能是一個對象。 – Artemis 2014-10-08 09:55:29