循环迭代中修改数组值的问题

1,177 阅读1分钟

forEach和for of 循环中修改数组元素的值

若数组元素是基本数据类型

  • 不可修改直接对forEach或for of的变量item做修改
//不可以下面这样,arr的元素不会发生改变
arr.forEach(item=>{
	item=item+1;
})
for (item of arr){
	item=item+1
}
  • 可以通过下标取到数组元素来修改
arr.forEach((item,idx)=>{
	arr[idx]=item+1
})

若数组元素是对象

  • 可以修改元素的属性,不能对整个元素做修改
arr = [{ a: 1 }, { b: 1 }, { a: 2 }];
arr.forEach((item) => {
  item.a = 9;
  item = { c: 2 };
});

//结果:
// [ { a: 9 }, { b: 1, a: 9 }, { a: 9 } ]