我正在尝试基于一个变量来构建一个javascript对象数组,该变量也有这样的对象:
时间#1:
console.log(obj_initial);
//{ evt1 : 'value1', evt2 : 'value2', evt3 : 'value3' }
此变量会在时间内更改其属性。
时间#2:
console.log(obj_initial);
//{ evtA : 'value9', evtB : 'value8', evtC : 'value7', evtD : 'value6' }
如何构建对象数组?像这样:
obj_final = [
{
evt1 : 'value1',
evt2 : 'value2',
evt3 : 'value3' },
{
evtA : 'value9',
evtB : 'value8',
evtC : 'value7',
evtD : 'value6'},
{
...
}]
任何人请...提前感谢。
答案 0 :(得分:2)
您可以在object_final
中推送每个新对象。像这样:
object_final.push(obj_initial);
每次指向obj_initial
的值发生变化时,都应调用此语句。
答案 1 :(得分:1)
<强> jsFiddle Demo
强>
由于您要重新分配obj_initial
的值,因此无需克隆。
var obj_final = [];
var obj_initial = {
evt1 : 'value1',
evt2 : 'value2',
evt3 : 'value3'
};
obj_final.push(obj_initial);
//this assignment uses a new object reference
//and obj_initial is no longer a reference to the object pushed
//into obj_final
obj_initial = {
evtA : 'value9',
evtB : 'value8',
evtC : 'value7',
evtD : 'value6'
};
obj_final.push(obj_initial);
答案 2 :(得分:0)
如果想要获取其状态的“快照”,则需要在将对象添加到数组之前克隆该对象:
function addToArr(obj, arr) {
var newObj = {};
for (var prop in obj) {
newObj[prop] = obj[prop];
}
arr.push(newObj);
}
每次要将对象推送到数组时,只需调用
即可addToArr(obj_initial, obj_final);