嵌套的forEach不会更改其元素

时间:2016-07-11 02:33:21

标签: javascript mongodb

这就是我要做的事情:

enter image description here

我执行脚本后没有出现任何错误,但没有任何更改或正在进行任何更改。

这是我的JSON对象,存储在doc

{
"name":"aaa"
"test":[
           { "carl":[
                      "huh",
                      "two"
                    ]
           }
       ]
}

这是我正在运行的脚本:

doc.test.forEach(function(emp){
      emp.carl.forEach(function(pass){
      pass="change";
      });
}); 

但是没有做出任何改变,或者是什么,出了什么问题?

预期输出:将carl内的所有元素更改为changed。所有test元素都将包含一个包含字符串数组的属性carl

2 个答案:

答案 0 :(得分:3)

将参数分配给某个值将不会在该函数之外产生任何影响。

相反,您应该分配一个属性:

emp.carl.forEach(function(pass, i, arr){
  arr[i] = "change";
});

var doc = {
  "name": "aaa",
  "test": [{
    "carl": [
      "huh",
      "two"
    ]
  }]
};
doc.test.forEach(function(emp) {
  emp.carl.forEach(function(pass, i, arr) {
    arr[i] = "change";
  });
});
console.log(doc);

答案 1 :(得分:0)

我的猜测是你真的需要修改对象。类似的东西:

emp.carl.forEach(function(pass, i){
    emp.carl[i]="change";
});