前端开发中的常用工具函数(九)
二十三、at() 方法通过索引(支持负数倒数)获取数组或字符串中的元素在前端日常开发中我们经常需要获取数组或字符串中的特定元素。如果是要获取最后一个元素传统写法总是离不开arr[arr.length - 1]或者arr.slice(-1)[0]。这种写法不仅冗长而且可读性一般。为了解决这个痛点ES2022 引入了一个非常实用的函数工具at()方法。1. 基本语法at()方法接收一个整数值作为参数返回该索引对应的数组或字符串元素。它最大的亮点在于支持负数索引。语法结构// 数组 Array.prototype.at(index) // 字符串 String.prototype.at(index) // TypedArray TypedArray.prototype.at(index)参数说明index可选要返回的元素的索引从零开始。如果传入负数则会从数组/字符串的末尾开始倒数。即-1代表最后一个元素-2代表倒数第二个元素依此类推。返回值返回指定索引处的元素。如果索引超出范围找不到对应元素则返回undefined。2. 基础示例我们通过几个简单的例子来快速了解它的用法。1. 数组的基础使用const cart [苹果, 香蕉, 橙子, 葡萄]; // 正向索引和传统写法一致 console.log(cart.at(0)); // 苹果 // 负向索引核心特性 console.log(cart.at(-1)); // 葡萄 (相当于 cart[cart.length - 1]) console.log(cart.at(-2)); // 橙子 // 越界访问 console.log(cart.at(10)); // undefined (不会报错非常优雅)2. 字符串的基础使用const filename app.component.ts; console.log(filename.at(0)); // a console.log(filename.at(-1)); // s // 结合 trim() 等链式调用 const greeting Hello World ; console.log(greeting.trim().at(-1)); // d3. 企业开发中的实际应用场景在企业级前端开发中at()方法不仅能让代码更简洁还能在特定业务逻辑下大放异彩。场景一面包屑导航与路由历史记录在后台管理系统中我们经常需要处理路由历史。比如获取用户上一次访问的页面或者在面包屑导航中获取当前层级的上一级页面。const routeHistory [/, /dashboard, /dashboard/user, /dashboard/user/profile]; // 传统写法 const prevRoute routeHistory[routeHistory.length - 2]; // 使用 at() 更加语义化 const currentRoute routeHistory.at(-1); // /dashboard/user/profile const parentRoute routeHistory.at(-2); // /dashboard/user场景二富文本编辑器/画板撤销操作栈操作在实现类似 Figma 画板或富文本编辑器时操作历史通常存在一个数组中。撤销操作就是弹出栈顶元素。const actionStack [createRect, changeColor, moveRect, resizeRect]; function undo() { if (actionStack.length 0) return; const lastAction actionStack.at(-1); // 查看最后一个操作 console.log(正在撤销操作: ${lastAction}); actionStack.pop(); // 真正移除 }场景三解析文件后缀名在处理文件上传时经常需要提取文件后缀。虽然可以用lastIndexOf但配合split和at写起来非常清爽。function getFileExtension(filename) { // 将文件名按 . 分割取最后一部分 return filename.split(.).at(-1); } console.log(getFileExtension(avatar.png)); // png console.log(getFileExtension(app.config.json)); // json console.log(getFileExtension(no_extension_file)); // no_extension_file (注意这种边界情况)场景四UI 组件轮播图无缝滚动在实现无限轮播图时有时需要把最后一张图克隆到第一张图前面或者获取最后一张图做平滑过渡。const slides document.querySelectorAll(.slide-item); const slidesArray Array.from(slides); // 获取最后一张幻灯片节点进行克隆 const lastSlideClone slidesArray.at(-1).cloneNode(true); // 插入到第一张前面 slidesContainer.insertBefore(lastSlideClone, slidesArray[0]);4. 注意事项虽然at()方法非常好用但在引入项目之前需要注意以下几点(1) 浏览器兼容性at()方法是 ES2022 引入的相对较新的特性。在现代浏览器Chrome 92, Firefox 90, Safari 15.4中支持良好。但如果你的项目需要兼容老旧浏览器如 IE 或低版本 Safari则不能直接使用需要通过 Babel 进行 polyfill或者谨慎使用。(2) 小数会被截断向下取整如果你不小心传入了小数at()不会报错而是会将其进行向下取整处理。const arr [10, 20, 30, 40]; console.log(arr.at(1.9)); // 20 (等同于 arr.at(1)) console.log(arr.at(-1.9)); // 30 (等同于 arr.at(-2)注意负数也是向负无穷取整)(3) 仅支持整数不支持布尔值等隐式转换在传统的方括号语法arr[]中JS 会发生隐式类型转换但at()方法则严格得多。如果传入非数字它会尝试转换为整数但强烈建议只传整数。const arr [1, 2, 3]; arr[1] // 2 (隐式转换) arr.at(1) // 2 (内部会做 ToInteger 转换但不推荐这样写代码可读性差)(4) 与 Lodash 的_.at区别如果你项目中使用了 Lodash请注意区分原生at()只接收一个索引参数返回单个元素。Lodash_.at()接收多个索引返回一个包含这些索引对应元素的新数组。const arr [a, b, c, d]; // Lodash _.at(arr, [1, 3]); // [b, d] // 原生 at arr.at(1); // b(5) 性能考量在极高频的循环操作中如百万次级别的数组末端访问原生方括号语法arr[arr.length - 1]的执行速度理论上会略快于arr.at(-1)因为后者涉及一次函数调用的开销。但在 99% 的日常前端业务中这点性能差异可以忽略不计。为了代码的可读性和可维护性推荐优先使用at()。

相关新闻

AI应用安全防护:从模型部署到数据隐私的工程实践指南

AI应用安全防护:从模型部署到数据隐私的工程实践指南

在实际 AI 应用开发中,安全防护往往是最容易被忽视但后果最严重的环节。随着 AI 技术在各行业的快速落地,从简单的智能对话到复杂的业务决策系统,AI 模型的安全漏洞可能导致数据泄露、决策偏差甚至系统被恶意操控。英国外交大臣的警告并非危言…

2026/7/22 8:58:02 阅读更多 →
uni-app 微信小程序开发:常用函数总结(一)

uni-app 微信小程序开发:常用函数总结(一)

一、 getCurrentPages():获取当前页面栈的实例1. 定义 getCurrentPages() 是微信小程序原生提供的全局函数,用于获取当前页面栈的实例。页面栈是一个数组,记录了从小程序启动到当前页面依次打开的所有页面。在 Uniapp 中,我们可以…

2026/7/23 23:42:42 阅读更多 →
iOS原生2D跑酷游戏开发实战:从Cocos2D-ObjC源码解析到性能优化

iOS原生2D跑酷游戏开发实战:从Cocos2D-ObjC源码解析到性能优化

1. 项目概述:从零到一构建iOS原生跑酷游戏最近在整理硬盘时,翻出了一个几年前用Cocos2D-ObjC完成的iOS跑酷游戏项目源码。这个项目虽然技术栈现在看来有些“复古”,但其中蕴含的游戏开发核心逻辑、性能优化技巧以及从零到一构建完整游戏的经验…

2026/7/22 2:42:31 阅读更多 →

最新新闻

计算机毕业设计之河南旅游网站的设计与实现

计算机毕业设计之河南旅游网站的设计与实现

快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,然后线上管理系统也就相继涌现。与此同时,人们开始接受方便的生活方式…

2026/7/24 0:20:36 阅读更多 →
【大白话说Java面试题 第191题】【08_Kafka篇】第7题:消息队列的优缺点

【大白话说Java面试题 第191题】【08_Kafka篇】第7题:消息队列的优缺点

📌 PDF:大白话说Java面试题 — 08_Kafka篇 第7题:消息队列的优缺点 📚 回答: 核心考点: 消息队列的优缺点是分布式系统面试中的经典送分题、也是送命题。大厂面试官不会满足于"解耦异步削峰 vs 复杂…

2026/7/24 0:20:36 阅读更多 →
为什么93%的AI客服项目在第3个月失败?——资深架构师曝光未公开的流程断点诊断矩阵

为什么93%的AI客服项目在第3个月失败?——资深架构师曝光未公开的流程断点诊断矩阵

更多请点击: https://kaifayun.com 第一章:AI客服项目失败率的宏观归因与行业警示 近年来,全球企业AI客服项目平均失败率持续高于68%(据Gartner 2023年AI实施追踪报告),远超其他AI应用领域。这一高失败率…

2026/7/24 0:19:35 阅读更多 →
贝叶斯强化学习:原理、优势与工程实践

贝叶斯强化学习:原理、优势与工程实践

1. 贝叶斯强化学习的核心优势解析在传统强化学习中,智能体通过试错与环境交互来学习最优策略,这种方法虽然有效,但存在两个关键痛点:一是对不确定性的处理能力有限,二是样本效率低下。贝叶斯强化学习(Bayes…

2026/7/24 0:19:35 阅读更多 →
高光谱图像超分辨率重建技术解析与应用

高光谱图像超分辨率重建技术解析与应用

1. 高光谱图像超分辨率重建的现状与挑战高光谱图像超分辨率重建(Hyperspectral Image Super-Resolution, HSI-SR)是遥感图像处理领域的重要研究方向。与普通RGB图像不同,高光谱图像包含数百个连续的光谱波段,能够提供丰富的地物光…

2026/7/24 0:19:35 阅读更多 →
计算机毕业设计之基于.NET仓库管理系统的设计与实现

计算机毕业设计之基于.NET仓库管理系统的设计与实现

该系统充分利用MVC框架的简洁性、高效性和易用性,net语言,结合SQL Server数据库技术,构建了一个功能完善的仓库管理系统。系统涵盖了销售员、采购员、库管员、客户、供应商、货物库存、货物接收等多个核心模块,实现了货物库存的快…

2026/7/24 0:19:35 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻