2011-10-25 40 views
1

我目前正在嘗試創建一個基於頁面上的控件和它們的值的JSON請求中使用的對象。試圖獲取flatten數據的地圖()

我使用jQuery map()函數來獲取鍵和值出了控制,像這樣

var data = $("fieldset > div.section").map(function (i, e) { 
    var result = {}; 
    result[e.children[0].id.substring(3);] = e.children[1].value; 

    return result; 
}).get(); 

這得到我之後的數據,但我最終嵌套的對象,而不是一個陣列,這看起來像這樣

[{"ClientId":"123456"},{"ClientIdType":"5"},{"City":"Brisbane"},{"Sex":"10"},{"PostCode":"4064"},{"State":"QLD"}] 

但我想是一樣的東西

{"ClientId":"123456","ClientIdType":"5","City":"Brisbane","Sex":"10","PostCode":"4064","State":"QLD"} 

是否有辦法一次完成此操作,還是應該重新遍歷數組以平坦化它?

+0

後'substring'你有分號?如果你這樣做的話,我不會期望它有效。 – davin

+0

如果您想要一次性完成,則需要在映射和內部映射將值添加到結果對象之前聲明結果。 – Ankur

回答

4

這是each()map()的情況下:

var data = {}; 

$("fieldset > div.section").each(function (i, e) { 
    data[e.children[0].id.substring(3)] = e.children[1].value; 
}); 
+0

事實上,由於jQuery由於某種原因不提供'$ .reduce()',因此'each'將會是您最好的選擇。 –

+0

完美,謝謝 – squig