2013-03-12 46 views
1

只是一個關於JS對象構造的問題。我有一個名爲mainObject的對象我想要將值推入,以使它們以第二部分代碼的格式顯示。這些值將被添加到循環中。我希望能夠做到以下幾點: -JS對象構造和添加

mainObject.data.push({lat : val['lat'], lng: val['lng'], count: 40});} 

有人能告訴我如何去做這件事嗎?試圖讓我的頭繞JS對象。

var mainObject = { 
    max: 46}; 

var mainObject = { 
      max: 46, 
      data: [{lat: 33.5363, lng:-117.044, count: 1},{lat: 33.5608, lng:-117.24, count: 1},{lat: 38, lng:-97, count: 1},{lat: 38.9358, lng:-77.1621, count: 1}] 
    }; 

謝謝:)

+0

這要看情況。價值從哪裏來?陣列?目的? – 2013-03-12 15:57:46

+0

爲什麼你有'var mainObject'兩次?第二個,你的'push'代碼應該可以正常工作 – Bergi 2013-03-12 16:05:28

回答

2

在JavaScript的.push被保留用於陣列。要添加到已具有屬性的對象,只需執行此操作即可。

var mainObject = { 
    max: 46 
}; 

mainObject.data = [{lat : val['lat'], lng: val['lng'], count: 40}]; 

你可以這樣結束了,看上去像這樣的對象:

mainObject{ 
    max : 46, 
    data : [{lat : val['lat'], lng: val['lng'], count: 40}] 
} 

這是你想要的。

編輯:

@cristoph指出,如果你改變你的初始mainObject的instansiation,那麼你可以這樣做:

var mainObject = { 
    max : 46, 
    data : [] 
} 

mainObject.data.push({lat : val['lat'], lng: val['lng'], count: 40}); 

這將使你同樣的結果。

你選擇這樣做,一旦 datamainObject一個屬性,是一個數組

無論哪種方式,你就可以繼續使用.push插入更多的元素進去。

所以這樣做是爲了上面:

mainObject.data.push({foo : bar}); 

會產生:

mainObject{ 
    max : 46, 
    data : [{lat : val['lat'], lng: val['lng'], count: 40}, {foo : bar}] 
} 
+1

如果他有'mainObject {max:46,data:[]}',push是完全正確的。所以OP可能唯一需要改變的就是'mainObject'的初始化。 – Christoph 2013-03-12 15:56:42

+0

@Christoph如果他已經擁有'data'屬性並且它的值是一個數組,那麼是。我相信他想添加一個新的屬性,你可以使用我提供的代碼來做 – Ryan 2013-03-12 15:57:46

+0

但是如果我推送多個項目呢? – user1840255 2013-03-12 15:59:52