为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英546537 2019-04-27 22:16:17
letarr=[{"a":1},{"b":2}];arr.map((item,index)=>{item.key=index;});console.log(arr);//[{a:1,key:0},{b:2,key:1}]这个应该是改变了arr数组了,难道我理解错了?
查看完整描述

2 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

对象是引用类型,传递的是地址,所以你的item.key=index会修改原数组中的对象
如果是这样就不会改变了
letarr=[1,2]
arr.map((item,index)=>item=3)//[3,3]
console.log(arr)//[1,2]
                            
查看完整回答
反对 回复 2019-04-27
?
Qyouu

TA贡献1786条经验 获得超11个赞

map不会改变原数组说的是返回的新数组,另外数组是引用类型,你在循环里面直接把原数组改了,不变才怪。去看看map的用法吧。你这种写法别说用map了,你直接arr[0]='a',这样原数组更改变了。
                            
查看完整回答
反对 回复 2019-04-27
  • 2 回答
  • 0 关注
  • 769 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信