Javascript数组对象没有改变

时间:2016-07-21 23:08:38

标签: javascript arrays json object

我有这个复杂的对象数组(我只显示解释问题所需的节点):

<div style="position: relative;width:100%">
     <div style="border-color:green;border-style:solid;
         border-width:15px;width:70%;"></div>
     <div style="position: absolute; top: 50%; 
                transform:translateY(-50%);left: 0px;">
         Hello, world.
     </div>
 </div>

当我为每个人执行此操作时,它会更改&amp; dc&#39; dc的值。特定位置上的数组的节点。但是在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; } }); 结束时,数组forEach仍然没有改变。

我放了很多console.logs并发现:

  •   

    如果我记录变量:value.json.doc.atualizacao.dc - IT SHOWS&#39; true&#39;

  •   

    如果我记录变量:value.json.doc.atualizacao - IT SHOWS&quot; dc = true&#39;

  •   

    如果我记录变量:value.json.doc - IT SHOWS&#39; atualizacao.dc = true&#39;

  •   

    如果我记录变量:value.json - IT SHOWS&#39; doc.atualizacao.dc = false&#39;

  •   

    如果我记录变量值 - IT SHOWS&#39; json.doc.atualizacao.dc = false&#39;

2 个答案:

答案 0 :(得分:0)

它的变化,看看这里: Plunker

在angular.forEach中,你只能传递函数的值。

看看上面的plunker,希望它有所帮助

答案 1 :(得分:0)

我开始认为$ rootScope没问题。 实际上,对象比我上面发布的对象复杂得多,大而且“重”。 我认为当我将其值更改为true时,在forEach结束时它仍在“应用”我的更改。这就是为什么当我记录对象的PART时它显示为true,当我记录根对象时,它显示为false。 它至少会有意义。