2013-05-07 43 views
0

做了一個這樣的搜索,但沒有出現。

我目前正在瀏覽JSON.net庫的例子,並從它們製作真實世界的場景。有一件事我正在努力,當我有未知數量的結果時,通過JSON響應循環。

我知道如果我有一個結果 例如,我可以通過將解析的JSON對象包裝在方括號中來創建單項數組。

$.each([res], function (key, value) { 
    //code here 
}); 

而且如果我有多個對象,不要包裝對象。

如何使這個每個調用足夠靈活來處理這兩種情況?

由於提前, 佈雷特

+0

你應該知道返回的JSON結果的類型。如果它返回一個數組,那麼無論它是否爲空,包含一個元素還是更多,都可以遍歷它。 – 2013-05-07 15:28:38

+0

只需編寫一個接受對象並返回一個數組的小幫助函數,如果它已經是任何數組,就返回它,否則將它推入一個新數組中。 – asawyer 2013-05-07 15:30:13

+1

你不應該改變函數中的接收類型。這是一個糟糕的設計。儘量避免它不惜一切代價。 (如果你有一個數組數組,下面的答案都不會起作用)。即使Javascript是一種動態類型的語言,但並不意味着你應該做這種事情。嘗試找到它返回類型並在那裏修復它的地方。之後,你可以假設'res'總是一個數組。 – mathk 2013-05-07 16:04:20

回答

0

如果你真的想這樣做,這樣,你可以輸入檢查你的「水庫」的變量,如果它不僅是包裹。這不是很性感代碼,請務必評論它的傳統,如果不是在一個IsArray的()函數或東西把它包:)

$.each((Object.prototype.toString.call(res) === '[object Array]') ? res : [res], function (key, value) { 
    //code here 
}); 

編輯:作爲@Klaasman指出的那樣,你可以使用jQuery的IsArray的()功能。所以它變成

$.each($.isArray(res) ? res : [res], function (key, value) { 
    //code here 
}); 
+1

如果你打算採用這種方法,那麼可以使用[jQuery.isArray](http://api.jquery.com/jQuery.isArray/)方法來檢查結果 – klaasman 2013-05-07 15:45:17

+0

。我不喜歡假設人們通常使用jQuery,但在這種情況下,它從代碼中很明顯。不重視。將相應地編輯 – 2013-05-07 15:52:53