javascript foreach-var-ptr

javascript foreach-var-ptr,javascript,jquery,foreach,scope,Javascript,Jquery,Foreach,Scope,我一直在使用javascript forEach func。 下面是一些代码: constpppp= { “azerty”:0, “qwerty”:[] }; $(文档).ready(函数(){ var k=[]; Varz=[0,1,2,3]; var m=['a','b','c']; z、 forEach(函数(v){ var p=Object.assign({},PPPP); $('#debug').append(v.toString()+','); p、 azerty=v; m、 fo

我一直在使用javascript forEach func。 下面是一些代码:

constpppp=
{
“azerty”:0,
“qwerty”:[]
};
$(文档).ready(函数(){
var k=[];
Varz=[0,1,2,3];
var m=['a','b','c'];
z、 forEach(函数(v){
var p=Object.assign({},PPPP);
$('#debug').append(v.toString()+',');
p、 azerty=v;
m、 forEach(函数(v){
p、 质量推力(v);
});
k、 推(p);
});
$('#res').html('Final:'+JSON.stringify(k));
});

您正在循环中引用同一对象。您可以将对象移动到回调内部,并为每个循环使用一个新对象

$(文档).ready(函数(){
var k=[];
Varz=[0,1,2,3];
z、 forEach(函数(v){
const PPPP={'azerty':0};//移动到此位置
var p=PPPP;
$('#debug').append(v.toString()+',');
p、 azerty=v;
k、 推(p);
});
$('#res').html('Final:'+JSON.stringify(k));
});

p对象在循环中具有相同的引用。您可以使用创建基于
PPPP

constpppp=
{
“azerty”:0
};
$(文档).ready(函数(){
var k=[];
Varz=[0,1,2,3];
z、 forEach(函数(v){
var p=Object.assign({},PPPP);
$('#debug').append(v.toString()+',');
p、 azerty=v;
k、 推(p);
});
$('#res').html('Final:'+JSON.stringify(k));
});

您应该将
var p
定义为空白对象,如下所示:

var p = {};

代码的其余部分应该保持不变。就这样。

您应该解释一下您希望这段代码做什么以及会发生什么。解释一下怎么样?状态更新。forEach中的forEach解决方案不再有效。已解决,但仍然很奇怪。。我必须处理掉里面的东西。谢谢!避免了很多痛苦,也是不错的选择。感谢