2011-09-09 24 views
0

我試圖按照以下步驟創建一個JSON對象:如何使用JQuery向JSON添加子數組?

var request = { 
    location : pyrmont, 
    radius : '50000', 
    types: ['amusement_park', 'store'] //Here I want to replace with a javascript array 
}; 

這JSON正常工作作爲輸入到谷歌地圖API,但是當我嘗試 取代JavaScript數組因此它失敗。任何幫助表示讚賞!

var allVals = []; 
$('#geo_form :checked').each(function() { 
    allVals.push("'" + $(this).val() + "'"); 
}); 
alert("allVals -> " + allVals); //allVals -> 'amusement_park','lodging' 

var request = { 
    location : pyrmont, 
    radius : '50000', 
    //types: ['amusement_park', 'store'] 
    types: [allVals] 
}; 
+0

如果回答了您的問題,請點擊對號。 :) – Trevor

回答

3

allVals已經是一個數組,你不需要包裝在括號中request對象。通過將數組包裝在括號中,可以將allVals數組設置爲新數組的最零索引。

var request = { 
    location : pyrmont, 
    radius : '50000', 
    types: allVals 
}; 

而且,你不需要用引號括值,當你推到數組,因爲它已經是一個String對象。

實際上,您可以避免在請求對象之外聲明一個變量,方法是先在請求對象中創建一個空數組,然後通過直接訪問該屬性來將其推送到對象上。

例子:

var request = { 
    types : [] 
}; 
request.types.push($(this).val()); 

對於大多數數據結構的問題,這是明智的打印對象到控制檯調試器,看看有什麼值都包含在對象中。 Firefox有流行的firebug,Chrome,Opera和IE的新版本都內置了一個控制檯調試器。使用方法console.log(arg)來打印。

+1

展開:[]是簡寫爲「new Array()」,所以當你鍵入[allVals]時你要求它發送的是「new Array(allvals)」,它創建數組(0 = array (/ * allVals鍵和值在這裏* /)) – Joe