Javascript 将元素推入数组会导致修改以前的元素
我将元素推入数组,问题是每次我推入一个新元素时,前面的所有元素都会与最后一个元素相等。 我遇到了一些问题,但我仍然不知道如何解决这个问题 请看这本书。正如帖子所建议的,我将Javascript 将元素推入数组会导致修改以前的元素,javascript,Javascript,我将元素推入数组,问题是每次我推入一个新元素时,前面的所有元素都会与最后一个元素相等。 我遇到了一些问题,但我仍然不知道如何解决这个问题 请看这本书。正如帖子所建议的,我将instance的声明移动到for循环中,但我仍然遇到同样的问题。也就是说,代码的输出如下所示:[46,46]。然而,我希望它是[23,46] 我真的快发疯了。有什么想法吗 $(文档).ready(函数(){ var json={'name':'Anna','counter':1} var计数器=[23,46]; var结果
instance
的声明移动到for循环中,但我仍然遇到同样的问题。也就是说,代码的输出如下所示:[46,46]
。然而,我希望它是[23,46]
我真的快发疯了。有什么想法吗
$(文档).ready(函数(){
var json={'name':'Anna','counter':1}
var计数器=[23,46];
var结果=[];
$(计数器)。每个(函数(){
var instance=json;
instance.counter=this;
结果推送(实例);
});
$(结果)。每个(函数(){
$(“#test”).append(“”+this.counter+” );
});
});代码>
您可以在每个
函数中移动对象,并为每次调用创建一个新的引用,而无需使用相同的对象引用
$(文档).ready(函数(){
var计数器=[23,46];
var结果=[];
$(计数器)。每个(函数(){
var实例={name:'Anna',计数器:1};
instance.counter=this;
结果推送(实例);
});
$(结果)。每个(函数(){
$(“#test”).append(“”+this.counter+” );
});
});代码>
您应该使用var instance=jQuery.extend(true,{},json)进行深度复制代码>
$(文档).ready(函数(){
var json={'name':'Anna','counter':1}
var计数器=[23,46];
var结果=[];
$(计数器)。每个(函数(){
var instance=jQuery.extend(true,{},json);
instance.counter=this;
结果推送(实例);
});
$(结果)。每个(函数(){
$(“#test”).append(“”+this.counter+” );
});
});代码>
您有相同的对象引用。