javascript 中数组方法是否修改原数组取决于具体方法。调用 push、pop、shift、unshift、splice、sort、reverse 以及 es6 的 fill、copywithin 会直接修改原数组并返回新值或操作结果;而 map、filter、slice、concat、join、tostring、indexof、includes 等则不会改变原数组,而是返回新数组或特定值。

push 和 pop 如何影响原数组
push 和 pop 是典型的修改原数组的方法。push 向数组末尾添加一个或多个元素,返回新长度;pop 删除末尾元素,返回被删除的值。两者都直接改变原数组内容。

let arr = [1, 2, 3]; console.log(arr.push(4)); // 输出: 4 console.log(arr); // 输出: [1, 2, 3, 4] let removed = arr.pop(); console.log(removed); // 输出: 4 console.log(arr); // 输出: [1, 2, 3]
map 与 filter 为什么不修改原数组
map 和 filter 属于非变异方法。map 对每个元素执行回调并返回新数组;filter 根据条件筛选元素并返回新数组。原数组保持不变。

let nums = [1, 2, 3, 4]; let doubled = nums.map(n => n * 2); console.log(doubled); // 输出: [2, 4, 6, 8] console.log(nums); // 输出: [1, 2, 3, 4] (未变) let evens = nums.filter(n => n % 2 === 0); console.log(evens); // 输出: [2, 4] console.log(nums); // 输出: [1, 2, 3, 4] (未变)
splice 在中间插入元素时的行为
splice 是一个强大的变异方法,可删除、替换或插入元素。当用于在中间插入时,它直接修改原数组结构,后续元素索引前移,返回被删除元素的数组(若无删除则返回空数组)。
let items = ['a', 'b', 'c']; let deleted = items.splice(1, 0, 'x'); console.log(deleted); // 输出: [] console.log(items); // 输出: ['a', 'x', 'b', 'c']
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











