遍历修改数组元素为字符串的数组时要注意的坑

直接上结论:

  遍历修改数组时,如果数组的项是字符串,如果要修改数组的项,不能采用item的方式直接修改,应该采取下标的方式修改数组的项.

  例如:

  

 

  var arr=["one", "two", "three"];

  arr.forEach((item,index)=>{
  item="four";

  })

  console.log(arr);

  结果必然是数组未改变,仍然是arry=["one", "two", "three"];,

  解决办法: 采用数组下标

  

 

 

 

  var arry=["one", "two", "three"];

  arr.forEach((item,index)=>{
  arr [ index ] = "four";

  })

  console.log(arr);

  原理: 字符串在js中是不可变的,在本例中遍历数组时,item代表的是字符串本身,而arr[index]代表的时数组的那一项(可以把那一项理解成一个指针),直接对item赋值数组是无接收到的,因为字符串在js中是不可变的,但是对指针arr[index]赋值,数组是能接收到的

  但是.如果数组的项是一个可变的数据类型,直接对item操作,是可以实现改变数组的

 

  

 

  

 

posted @ 2020-12-16 19:38  你真有趣  阅读(606)  评论(0)    收藏  举报