面试题:JavaScript 中怎么删除数组最后一个元素?

这是一个基础但高频的 JavaScript 面试题。删除数组最后一个元素有多种方法,以下是几种常用方式及其区别:


✅ 方法一:pop() —— 最常用、最推荐

const arr = [1, 2, 3, 4];

const lastElement = arr.pop(); // 删除并返回最后一个元素

console.log(lastElement); // 4
console.log(arr);           // [1, 2, 3]

✅ 特点:

  • 改变原数组
  • 返回被删除的元素
  • 时间复杂度:O(1)
  • 推荐用于大多数场景

✅ 方法二:length 属性 —— 简洁但不返回值

const arr = [1, 2, 3, 4];

arr.length = arr.length - 1; // 或直接 arr.length--

console.log(arr); // [1, 2, 3]

✅ 特点:

  • 改变原数组
  • 不返回被删除的元素
  • 可以一次性删除多个元素(如 arr.length = 2
  • 性能好,但可读性略差

✅ 方法三:splice() —— 通用删除方法

const arr = [1, 2, 3, 4];

const removed = arr.splice(-1, 1); // 从倒数第一个开始,删除1个

console.log(removed); // [4](返回的是数组)
console.log(arr);     // [1, 2, 3]

✅ 特点:

  • 改变原数组
  • 返回被删除元素组成的数组
  • 功能强大,可删除任意位置的元素
  • 性能略低于 pop()(但差异极小)

✅ 方法四:slice() —— 不改变原数组(函数式编程风格)

const arr = [1, 2, 3, 4];

const newArr = arr.slice(0, -1); // 截取从开始到倒数第一个之前

console.log(newArr); // [1, 2, 3]
console.log(arr);    // [1, 2, 3, 4](原数组不变)

✅ 特点:

  • 不改变原数组
  • 返回一个新数组
  • 适合函数式编程或需要保留原数组的场景
  • 需要额外内存存储新数组

✅ 方法五:filter() —— 函数式方法(不推荐用于此场景)

const arr = [1, 2, 3, 4];

const newArr = arr.filter((_, index) => index !== arr.length - 1);

console.log(newArr); // [1, 2, 3]

⚠️ 缺点:

  • 遍历整个数组,性能差(O(n))
  • 冗余,不适合简单删除操作

✅ 总结(面试回答模板)

删除数组最后一个元素最常用的方法是 pop(),它直接修改原数组并返回被删除的元素,性能好且语义清晰。

其他方法:

  • length--:简洁,但不返回值;
  • splice(-1, 1):功能强大,适合复杂删除;
  • slice(0, -1):不修改原数组,适合函数式编程;

推荐使用 pop(),除非有特殊需求(如不可变性)。

⚠️ 注意:pop()splice() 会改变原数组,使用时需确认是否允许修改原数据。

THE END
喜欢就支持一下吧
点赞12 分享