2013-03-12 45 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