Array.prototype.at

简介: Array.prototype.at

概念


Array.prototype.at方法根据索引位置,返回数组中对应的元素。


语法


arr.at(index)


参数


  • index 需要检索的位置。


返回值


  • 返回数组中索引的元素。如果索引不在数组范围内,则返回undefined。


描述


  1. 当参数index是整数时。
    1.1、 当参数index不存在时,默认为0;
    1.2、 当参数index为正整数时,从数组起始位置开始向数组末尾依次索引,即从前向后依次索引;
    1.3、 当参数index为负整数时,从数组末尾位置开始向数组的起始位置依次索引,即从后向前依次索引。
    1.4、 当参数index不在数组范围内,则返回undefined。
  • 当 index 不存在时,等价于0;
  • 当 index 为正整数时;
  • 当 index 为负整数时,等价于 index + arr.length。
0 1 2 3 4
-5 -4 -3 -2 -1
  1. 当参数不是整数时。
    将参数转化成整数,在按照上面的方式判断。

注意 at方法中参数不能将BigInt转化成数值。

讨论参数index为什么不能将BigInt转化成数值?猜一猜转化规则?

公布参考答案:

at方法中参数进行了隐式转换 index = Math.floor(index)。


例子


例一、参数不存在


let arr = ['前', '端', '咖', '官', '网'];
console.log(arr.at());  // 前


例二、参数为0时


let arr = ['前', '端', '咖', '官', '网'];
console.log(arr.at(0));  // 前


例三、参数为正整数时


let arr = ['前', '端', '咖', '官', '网'];
console.log(arr.at(1));  // 端


例四、参数为负整数时


let arr = ['前', '端', '咖', '官', '网'];
console.log(arr.at(-1));  // 网


例五、参数不在数组范围内


let arr = ['前', '端', '咖', '官', '网'];
console.log(arr.at(5));  // undefined
console.log(arr.at(-6));  // undefined


例六、参数是浮点数时,向下取整


let arr = ['前', '端', '咖', '官', '网'];
let result = arr.at(1.9);
console.log(result);  // '端'


例七、参数是字符串时


let arr = ['前', '端', '咖', '官', '网'];
let result = arr.at('1.9');
console.log(result);  // '端'


例八、参数是布尔值时


let arr = ['前', '端', '咖', '官', '网'];
let result = arr.at(true);
console.log(result);  // '端'


例九、参数是BigInt时


let arr = ['前', '端', '咖', '官', '网'];
let result = arr.at(1n);  // Uncaught TypeError: Cannot convert a BigInt value to a number
console.log(result);


实现 at 方法


if (!Array.prototype.at) {
  Array.prototype.at = function (index) {
    index = Math.floor(index);
    if (index === undefined) {
      index = 0;
    } else if (index < 0) {
      index = index + this.length;
    }
    retun this[index];
  };
}

目录
相关文章
|
XML JSON JavaScript
【前端】Vue项目中 JSON 编辑器的使用
【前端】Vue项目中 JSON 编辑器的使用
6452 0
|
网络安全 虚拟化 Windows
同一个局域网主机中的一台主机连接另一台主机的虚拟机
同一个局域网主机中的一台主机连接另一台主机的虚拟机
|
域名解析 网络协议 算法
2022阿里云免费SSL证书申请全过程(图文详解)
阿里云SSL证书免费申请流程:先0元支付SSL证书资源包,每个阿里云账号可以一年可以申请20个免费SSL证书,然后域名DNS验证,提交CA审核后就可以下载SSL证书到本地了
52384 4
2022阿里云免费SSL证书申请全过程(图文详解)
|
2月前
|
存储
阿里云无影云电脑个人版收费价格表:黄金款、白金款、铂金款、钛金款和黑金款收费标准,2026年最新
阿里云无影云电脑个人版是面向个人/家庭的高性能云电脑,支持办公、游戏等场景。提供黄金至黑金5款套餐,含40–1000GB存储、40–640灵豆/月,连续包年低至79.9元起,支持免费试用。阿里云无影云电脑官网:https://t.aliyun.com/U/Qlbmzx
531 0
|
人工智能 大数据 安全
拔俗AI临床大数据科研分析平台:用智能技术加速医学研究新突破
AI临床大数据科研平台基于云原生架构,融合医疗NLP、联邦学习与智能分析技术,破解非结构化数据处理难、多源数据融合难、统计周期长等痛点,实现数据治理、智能分析与安全协作全链路升级,赋能医学科研高效、安全、智能化发展。
421 0
|
11月前
|
JSON 安全 前端开发
如何开发一套EHS健康安全环境管理系统中的危废品管理板块?(附架构图+流程图+代码参考)
危废管理是EHS系统的重要组成部分,涉及企业危险废物的全生命周期管控。若管理不当,可能导致监管处罚、环境安全风险及成本失控。一个高效的危废管理系统应实现入库→存储→出库→处置→档案追溯→看板治理的闭环流程,不仅确保合规,还能降本增效,并在事故发生时快速响应与举证。系统需涵盖危废目录、出入库单、库存管理、处置记录、合规审批、数据看板等核心功能,结合技术架构与数据库设计,支持前后端开发与移动端应用,最终实现可视化、可追溯、自动化管理。
|
12月前
|
人工智能 算法 程序员
【三桥君】编程学习挫折常见,‘宝剑锋从磨砺出’:如何找到突破的学习方法?
产品专家三桥君分享克服编程挫折的六种方法:接受挫折、分析问题、求助他人、调整心态、积累经验、分享经验,助力编程学习突破瓶颈。
389 0
|
存储 人工智能 自然语言处理
知识库管理:全流程智能化中枢,驱动企业信息资产高效流转
智能系统的知识库管理技术可以深度融合AI技术与精细化流程控制,提供从内容创建到版本追溯的全生命周期管理。支持多模态数据统一存储(文本、语音、图像等),实现自动化审核、智能分类与语义检索,确保企业知识资产的安全存储与高效利用,助力业务持续优化。核心功能包括多角色协作编辑、动态标签管理、历史版本追溯及毫秒级语义检索,大幅提升信息管理效率与准确性。
738 9
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器架构有啥区别?X86计算、Arm、GPU异构、裸金属和高性能计算对比
阿里云ECS涵盖x86、ARM、GPU/FPGA/ASIC、弹性裸金属及高性能计算等多种架构。x86架构采用Intel/AMD处理器,适用于广泛企业级应用;ARM架构低功耗,适合容器与微服务;GPU/FPGA/ASIC专为AI、图形处理设计;弹性裸金属提供物理机性能;高性能计算则针对大规模并行计算优化。
1418 7
|
存储 SQL 分布式计算
AnalyticDB MySQL升级为湖仓一体架构:从湖到仓,打造云原生一站式数据分析平台
AnalyticDB MySQL湖仓版同时支持低成本离线处理和高性能在线分析,适合ETL/BI报表/交互式查询/APP应用等多场景,并可无缝替换CDH/TDH/Databricks/Presto/Spark/Hive等