对象的Javascript数组未更改

对象的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时,它会更改特定位置上数组的“dc”节点的值。但是在
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”


它正在变化,请看这里:

在angular.forEach中,您可以只传递函数的值


看看上面的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;
    }
});