Javascript 使用push方法在数组中插入对象

Javascript 使用push方法在数组中插入对象,javascript,arrays,push,Javascript,Arrays,Push,我得到了输出 var dd = []; const ff = { }; ff.dd = 0; dd.push(ff); console.log(dd); ff.dd = 1; dd.push(ff); console.log(dd); 但我希望输出像这样 [ { dd: 0 } ] [ { dd: 1 }, { dd: 1 } ] 要获得该输出,您必须创建一个新对象(ff),而不是修改现有对象 vardd=[]; 设ff={};// 要获得该输出,您必须创建一个新对象(ff),而不是修改现

我得到了输出

var dd = [];
const ff = { };
ff.dd = 0;
dd.push(ff);
console.log(dd);
ff.dd = 1;
dd.push(ff);
console.log(dd);
但我希望输出像这样

[ { dd: 0 } ]
[ { dd: 1 }, { dd: 1 } ]

要获得该输出,您必须创建一个新对象(
ff
),而不是修改现有对象

vardd=[];

设ff={};// 要获得该输出,您必须创建一个新对象(
ff
),而不是修改现有对象

vardd=[];

设ff={};// Javascript保留对对象的引用。 在代码中,首先将
ff
变量的
dd
设置为0。 然后修改同一
ff
变量的
dd
值,并将对该变量的另一个引用推送到数组中。 这就是为什么您会得到一个数组,其中有两个对相同
ff
对象的引用,且
dd
值为1


如果要获得编写的结果,需要先创建一个新对象,然后再将其推送到数组中。

Javascript保留对对象的引用。
[ { dd: 0 } ]
[ { dd: 0 }, { dd: 1 } ]
在代码中,首先将
ff
变量的
dd
设置为0。 然后修改同一
ff
变量的
dd
值,并将对该变量的另一个引用推送到数组中。 这就是为什么您会得到一个数组,其中有两个对相同
ff
对象的引用,且
dd
值为1


如果要获得编写的结果,需要在再次将其推入数组之前创建一个新对象。

如果
ff
始终具有一级深度,则每次将其放入数组时,可以使用克隆
ff

[ { dd: 0 } ]
[ { dd: 0 }, { dd: 1 } ]

vardd=[];
常数ff={};
ff.dd=0;
dd.push(Object.assign({},ff));
控制台日志(dd);
ff.dd=1;
dd.push(Object.assign({},ff));

控制台日志(dd)
如果您的
ff
始终具有一级深度,则每次将
ff
放入数组时,您可以使用克隆
ff

[ { dd: 0 } ]
[ { dd: 0 }, { dd: 1 } ]

vardd=[];
常数ff={};
ff.dd=0;
dd.push(Object.assign({},ff));
控制台日志(dd);
ff.dd=1;
dd.push(Object.assign({},ff));

控制台日志(dd)但是我应该使用一个对象来分配数据。我应该怎么做?@viswaram:你不能只使用一个对象;您想要的输出清楚地显示了一个数组,其中包含两个内容不同的对象(不同的
dd
properties)。但是我应该使用一个对象来分配数据。我该怎么办?@viswaram:您不能只使用一个对象;您想要的输出清楚地显示了一个数组,其中包含两个具有不同内容的对象(不同的
dd
属性)。强烈建议在提问时不要对两个完全不同的对象使用相同的标识符(
dd
),这会使问题及其潜在答案变得不必要的复杂。强烈建议在提问时不要对两种完全不同的事物使用相同的标识符(
dd
),这会使问题及其潜在答案变得不必要的复杂。