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

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

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

慕村225694 2019-08-14 00:15:03
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贡献1853条经验 获得超6个赞

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

TA贡献2065条经验 获得超14个赞

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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号