JavaScript获取列表最后一个元素的N种方法

 更新时间:2026年05月25日 08:16:12   作者:detayun  
在日常开发中,我们经常需要获取数组的最后一个元素,本文总结了JavaScript中获取数组最后一个元素的5种方法,还提供了处理空数组的安全写法和实际应用场景,希望可以帮助大家选择最适合的方案

前言

在日常开发中,我们经常需要获取数组的最后一个元素。比如获取最新的聊天记录、最新的股票价格、最新的订单信息等等。

看似简单的需求,其实有 N 种实现方式!今天就来总结一下 JS 中获取数组最后一个元素的所有方法,从最老的语法到最新的 ES2022 特性,一网打尽!

方法一览

序号方法兼容性推荐度代码量
1arr[arr.length - 1]✅ IE6+⭐⭐⭐⭐⭐1行
2arr.at(-1)✅ ES2022+⭐⭐⭐⭐⭐1行
3arr.slice(-1)[0]✅ IE9+⭐⭐⭐⭐1行
4arr.pop()✅ IE4+⭐⭐1行
5arr.reverse()[0]✅ IE4+2行

方法详解

方法1:arr[arr.length - 1]⭐⭐⭐⭐⭐ 最经典

这是 最通用、最经典 的方法,兼容性最好,从 IE6 就支持了!

const list = [1, 2, 3, 4, 5];
const lastItem = list[list.length - 1];

console.log(lastItem); // 5

优点

  • 兼容性极好(IE6+)
  • 性能最优
  • 不会修改原数组

缺点

代码稍长

方法2:arr.at(-1)⭐⭐⭐⭐⭐ 最简洁(ES2022)

ES2022 新增的方法,支持 负数索引-1 就是最后一个!

const list = [1, 2, 3, 4, 5];
const lastItem = list.at(-1);

console.log(lastItem); // 5

优点

  • 代码最简洁
  • 语义清晰(-1 就是倒数第一个)
  •  不会修改原数组

缺点

需要 ES2022+ 环境(Node.js 16+、现代浏览器)

浏览器兼容性:Chrome 92+、Firefox 90+、Safari 15.4+、Edge 92+

方法3:arr.slice(-1)[0]⭐⭐⭐⭐ 不修改原数组

slice(-1) 会返回一个包含最后一个元素的新数组,再取 [0] 即可。

const list = [1, 2, 3, 4, 5];
const lastItem = list.slice(-1)[0];

console.log(lastItem); // 5

优点

  • 不会修改原数组
  • 代码简洁

缺点

  • 会创建新数组,性能略差
  • IE8 不支持负数索引

方法4:arr.pop()⭐⭐ 会删除元素!

pop()删除并返回最后一个元素。

const list = [1, 2, 3, 4, 5];
const lastItem = list.pop();

console.log(lastItem); // 5
console.log(list);     // [1, 2, 3, 4]  ⚠️ 原数组被修改了!

优点

代码最短

缺点

会修改原数组! 一般不推荐

方法5:arr.reverse()[0]⭐ 会反转数组!

先反转数组,再取第一个元素。

const list = [1, 2, 3, 4, 5];
const lastItem = list.reverse()[0];

console.log(lastItem); // 5
console.log(list);     // [5, 4, 3, 2, 1]  ⚠️ 原数组被反转了!

优点

代码短

缺点

会修改原数组! 千万别用

性能对比

我用 console.time 做了个简单测试(100万次循环):

方法耗时性能排名
arr[arr.length - 1]~15ms🥇 第1名
arr.at(-1)~20ms🥈 第2名
arr.slice(-1)[0]~80ms🥉 第3名
arr.pop()~18ms第4名(但会修改数组)

结论arr[arr.length - 1] 性能最好,arr.at(-1) 紧随其后且代码最简洁!

安全写法(防止空数组)

如果数组可能为空,直接取会返回 undefined,建议加个判断:

const list = [];

// ❌ 不安全
const last1 = list[list.length - 1];  // undefined

// ✅ 安全写法1:三元运算
const last2 = list.length > 0 ? list[list.length - 1] : null;

// ✅ 安全写法2:可选链 + 空值合并(ES2020+)
const last3 = list.at(-1) ?? null;

// ✅ 安全写法3:默认值
const last4 = list[list.length - 1] || '默认值';

实战场景

场景1:获取最新消息

const messages = [
  { id: 1, text: '你好' },
  { id: 2, text: '在吗' },
  { id: 3, text: '吃了吗' }
];

const lastMsg = messages.at(-1);
console.log(lastMsg.text); // '吃了吗'

场景2:获取最新股价

const prices = [10.5, 20.3, 15.8, 12.1, 18.9];
const latestPrice = prices[prices.length - 1];
console.log(`最新价格:${latestPrice}`); // 最新价格:18.9

场景3:兼容老浏览器

// 如果项目需要兼容 IE,用这个
function getLastItem(arr) {
  return arr.length > 0 ? arr[arr.length - 1] : null;
}

最终推荐

场景推荐方法
现代项目(ES2022+)arr.at(-1)
兼容老浏览器arr[arr.length - 1]
不想修改原数组 + 简洁arr.slice(-1)[0]
不推荐arr.pop()arr.reverse()[0]

总结

方法代码推荐指数
arr[arr.length - 1]⭐⭐⭐⭐⭐兼容性之王
arr.at(-1)⭐⭐⭐⭐⭐代码之王
arr.slice(-1)[0]⭐⭐⭐⭐安全之选
arr.pop()⭐⭐⚠️ 慎用
arr.reverse()[0]❌ 别用

一句话总结:现代项目用 at(-1),兼容老项目用 length - 1,其他的看看就好!

到此这篇关于JavaScript获取列表最后一个元素的N种方法的文章就介绍到这了,更多相关JavaScript获取列表最后一个元素内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于JS实现简单的随机抽取幸运员工系统

    基于JS实现简单的随机抽取幸运员工系统

    这篇文章主要为大家详细介绍了基于HTML+JavaScript实现简单的随机抽取幸运员工系统,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-11-11
  • 使用js实现数据格式化

    使用js实现数据格式化

    这篇文章主要介绍了使用javascript实现数据格式化为字符串,非常的实用,这里推荐给有相同需求的小伙伴。
    2014-12-12
  • 将字符串转换成gb2312或者utf-8编码的参数(js版)

    将字符串转换成gb2312或者utf-8编码的参数(js版)

    直接在url中传递中文参数时,读到的中文都是乱码,那么我们应该怎么将这些参数转换呢,接下来与大家分享下将字符串转换成utf-8或者gb2312编码的参数的技巧
    2013-04-04
  • Javascript 生成指定范围数值随机数

    Javascript 生成指定范围数值随机数

    查手册后才知道, 介绍的信息少得可怜呐, 没有介绍生成 m-n 范围的随机数..., 就只是给你一个 Math.random() 了事.
    2009-01-01
  • 详解如何使用webpack打包JS

    详解如何使用webpack打包JS

    这篇文章主要介绍了详解如何使用webpack打包JS,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Bootstrap实现的表格合并单元格示例

    Bootstrap实现的表格合并单元格示例

    这篇文章主要介绍了Bootstrap实现的表格合并单元格,涉及bootstrap界面布局相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • JS实现时间选择器

    JS实现时间选择器

    这篇文章主要为大家详细介绍了JS实现时间选择器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • javascript String 的扩展方法集合

    javascript String 的扩展方法集合

    String 的扩展方法集合,可以是javascript对string的功能更多
    2008-06-06
  • Echarts Bar横向柱状图实例代码

    Echarts Bar横向柱状图实例代码

    柱状图主要用于表示离散数据的频数,也是一种基础可视化图,这篇文章主要给大家介绍了关于Echarts Bar横向柱状图的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • js实现简单的网页换肤效果

    js实现简单的网页换肤效果

    本文主要分享了js实现简单的网页换肤效果的示例代码。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01

最新评论