Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象推送到数组,然后对其进行修改,使所有对象属性都相同_Javascript_Javascript Objects - Fatal编程技术网

Javascript 将对象推送到数组,然后对其进行修改,使所有对象属性都相同

Javascript 将对象推送到数组,然后对其进行修改,使所有对象属性都相同,javascript,javascript-objects,Javascript,Javascript Objects,当我运行此代码时: var e={ “id”:0, “名称”:“n” }; var数据=[]; 对于(变量i=0;i

当我运行此代码时:

var e={
“id”:0,
“名称”:“n”
};
var数据=[];
对于(变量i=0;i<3;i++){
e、 id=i;
数据推送(e);
}

控制台日志(数据)问题在于您多次推送同一对象并对其进行编辑

尝试在循环中定义e:

var data=[];
for(var i=0;i<10;i++)
{
    var e={'id':i,'name':'n'};
    data.push(e);
}

我不能。我应该使用外部变量“e”。此外:将“e”赋值给任何局部变量都会产生相同的结果jQuery?为什么是jQuery<代码>变量e_copy={};对于(var p in e)e_copy[p]=e[p]克隆!我受够了。谢谢@斜视jquery有一个有用的克隆fn。您可以使用下划线中的一个,也可以自己滚动。我只是更熟悉oneJavaScript从不在分配时复制复合数据结构。你在把对这个对象的引用推到数组中,我知道。如何解决?
var data=[];
var e={'id':0,'name':'n'};
for(var i=0; i<10; i++)
{
    var e_copy = jQuery.extend({}, e); // or clone(e)
    e_copy.id=i;
    data.push(e);
}
function clone(o){
    var o_copy = {}; 
    for (var p in o) {
        if (o.hasOwnProperty(p)){
            o_copy[p] = o[p]
        }
    }
    return o_copy;
}