一直以来我认为 map() 方法是不会改变原数组的,面试的时候经常被问到~
先看下面这段代码
基本数据类型:
复杂数据类型:
user 将对象中的数据赋值给 user2,实际上是将这个内存对象的引用地址复制给了 user2,。它们共同指向同一块内存对象(内存地址),所以复杂数据中修改的是内存对象中的值,就会影响所有指向这块内存的地址引用的数据值
再看这段代码
item 被赋值为 item*3,但打印的结果显示 arr 并没有被改变。接下来试着把数组改为对象数组
这时候,可以看到,原始数组的 arr 被改变了。
所以,说 map 不会改变原数组 并不严谨。
在一定的情况下,基本数据类型不会,复杂数据类型会。不改变的话需要声明一个新的变量来存储map的结果
上面的代码,都有一个共同的特点:直接修改了每个 item 的属性(如果 item 是一个对象),这是导致改变原数组的根本原因,实际开发时,不建议这么做!
正确的做法是声明一个新的变量来存储 map 的结果,而不是去修改原始数组