数组方法中哪些会改变原数组,哪些不会?
数组方法中哪些会改变原数组,哪些不会?
会改变原数组的方法:
增删改操作
- 增:
push
、unshift
、splice
- 删:
pop
、shift
、splice
- 改:
splice
、copyWithin
、fill
重新排序
reverse
、sort
不改变原数组的方法:
创建新数组
- 部分选取:
slice
、filter
- 合并:
concat
迭代/转换
- 无副作用迭代:
map
、forEach
- 返回单值或布尔值:
reduce
、some
、every
、includes
- 转换字符串:
join
数组操作
- 展开:
flat
- 获取迭代器:
keys
、entries
特别注意:
splice
是一个灵活的增删改方法,视参数不同决定行为。map
在基本类型和引用类型上的区别:基本类型不会改变原数组,但如果数组元素是对象,修改对象属性会影响原数组。- 排序和颠倒顺序的方法 (
sort
,reverse
) 都会直接修改原数组,需要注意其不可逆性。