JavaScript Array map() 方法, 不会改变原始数组。为啥我测试会改变原有数组?

let arr =[{"a":1},{"b":2}];
arr.map((item,index)=>{item.key = index;});
console.log(arr); // [{a: 1, key: 0}, {b: 2, key: 1}]

这个应该是改变了arr数组了,难道我理解错了?

阅读 5k
2 个回答

对象是引用类型, 传递的是地址, 所以你的 item.key = index 会修改原数组中的 对象

如果是这样 就不会改变了

let arr = [1, 2]
arr.map((item, index) => item = 3)    // [3, 3]
console.log(arr)    // [1, 2]

map不会改变原数组说的是返回的新数组,另外数组是引用类型,你在循环里面直接把原数组改了,不变才怪。去看看map的用法吧。
你这种写法别说用map了,你直接arr[0]='a',这样原数组更改变了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题