JavaScript数组方法修改原数组的原因是什么
· 阅读需 2 分钟
修改原数组的方法
这些方法之所以会修改原数组,是因为它们的操作本质上会改变数组的内容
push()
和pop()
:添加和删除元素会改变数组的长度和内容,因此这两个方法会修改原数组。unshift()
和shift()
:在数组的开头添加和移除元素都会导致数组中其他元素的索引发生变化,因此这两个方法会修改原数组。splice()
:splice()
方法既可以添加、删除、替换元素,也可以截取数组的一部分。这些操作都会导致数组内容的变化,因此splice()
方法会修改原数组。reverse()
:颠倒数组中的元素顺序会改变数组的内容,所以reverse()
方法会修改原数组。sort()
:排序数组的元素会改变它们的顺序,因此sort()
方法会修改原数组。fill()
:用指定的值填充数组的元素会改变数组的内容,所以fill()
方法会修改原数组。copyWithin()
:将数组中的一部分元素复制到另一个位置会改变数组内容,因此copyWithin()
方法会修改原数组。
不修改原数组的方法
- concat():合并两个数组或更多数组,并返回一个新数组
- slice():复制原数组的一部分并返回一个新数组
- join():将数组元素以指定的分隔符拼接为一个字符串
- map():遍历数组,并返回一个新数组
- filter():遍历数组,返回符合条件的元素组成的新数组
- reduce():遍历数组,将数组元素累加或累乘,并返回一个值。
总结
各位可以看出,修改原数组的方法,往往是要对数组中的元素进行操作。或者说是这种操作影响到了元素的位置。这种情况下的方法,是要修改原数组的。
不修改原数组的方法,往往是想对整个数组进行操作。并不是想改变数组元素,而是对整个数组进行遍历、合并、转化等。