对象的Javascript数组未更改
我有这个复杂的对象数组(我将只显示解释问题所需的节点): 当我这样做forEach时,它会更改特定位置上数组的“dc”节点的值。但是在对象的Javascript数组未更改,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我有这个复杂的对象数组(我将只显示解释问题所需的节点): 当我这样做forEach时,它会更改特定位置上数组的“dc”节点的值。但是在forEach的末尾,数组arr仍然保持不变 我放了很多console.log,发现: 如果我记录变量:value.json.doc.atualizacao.dc-它显示“true” );如果我记录变量:value.json.doc.atualizacao-它显示'dc=true' 如果我记录变量value.json.doc,它会显示'atualiza
forEach
的末尾,数组arr
仍然保持不变
我放了很多console.log,发现:
- 如果我记录变量:value.json.doc.atualizacao.dc-它显示“true”
- );如果我记录变量:value.json.doc.atualizacao-它显示'dc=true'
- 如果我记录变量value.json.doc,它会显示'atualizacao.dc=true'
- 如果我记录变量value.json,它会显示'doc.atualizacao.dc=false'
- 如果我记录变量值,它会显示“json.doc.atualizacao.dc=false”
看看上面的plunker,希望它有帮助我开始不认为这是$rootScope的问题。 事实上,这个对象比我上面贴的那个复杂、大、重。 我认为,当我将其值更改为true时,在forEach结束时,它仍然在“应用”我的更改。这就是为什么当我记录对象的一部分时,它显示为true,而当我记录根对象时,它显示为false。
这至少是有道理的 你能给我们演示一下这个错误吗?尝试复制问题会有很大帮助。这应该可以正常工作,只需在控制台中测试它(使用
arr.forEach
而不是angular.forEach
),请参阅我尝试使用arr.forEach和。还是没有变化。奇怪的是,这家伙下面的答案很有效。最不可思议的是,除了angular.forEach函数上的参数外,代码与我的代码相同。但它仍然不适用于我(即使删除第二个参数),这里是我的代码的“屏幕截图”(有点复杂),它不起作用。学院是“arr”
var arr = [
{
json: {
doc: {
id: 1,
atualizacao:{
dc: false
}
}
}
}
]
angular.forEach(arr, function(value, key) {
if(value.json.doc.id == 1){
value.json.doc.atualizacao.dc = true;
}
});