寻找一个资源来解释为什么当我运行以下代码时,我的原始数组没有变化。
arr = [1,2,3,4];
for(let val of arr){
val = val * 2;
console.log(val);
}
console.log(arr);
我正在学习for ... in和for ... of循环,不确定为什么我的console.log(arr)无法打印出[2,4,6,8]。
最佳答案
这里的问题是标识符val
被覆盖。使用另一个整数和val只是在循环的每次迭代中调用一个临时变量。如果您使用了一个对象,但没有重新分配该变量,则您的值将保持不变
// Object values
var x = [{z:1},{z:2}]
for(let y of x){
// No reassignment
y.z=3;
}
console.log(x); //[{"z":3},{"z":3}]
如果要就地修改简单类型的数组,可以执行以下操作:
var q = [5,6,7];
for( i in q){
q[i] = q[i] * 2;
}
console.log(q); //[10, 12, 14]