首页 > 编程语言 >JavaScript 中获取数组最后一个元素3种方法及性能

JavaScript 中获取数组最后一个元素3种方法及性能

时间:2023-07-13 16:47:55浏览次数:68  
标签:元素 console arrayTest JavaScript 获取 length 数组 const

当需要从 JavaScript 中的数组中获取最后一个元素时,有多种选择,本文将提供 3 种可用方法。

1. 数组 length 属性
length 属性返回数组中元素的数量。从数组的长度中减去 1 得到数组最后一个元素的索引,使用它可以访问最后一个元素。从长度中减去 1 的原因是,在 JavaScript 中,数组索引编号从 0 开始。即第一个元素的索引将为 0。因此,最后一个元素的索引将为数组的 length-1。

const arrayTest = ["第一个元素", "第二个元素", "最后一个元素"];
const length = arrayTest.length;
const lastValue = arrayTest[length - 1];
console.log(lastValue); // 最后一个元素 

2. 数组 slice 方法
slice() 方法从一个数组中返回特定的元素,作为一个新的数组对象。此方法选择从给定开始索引开始到给定结束索引结束的元素,不包括结束索引处的元素。slice() 方法不会修改现有数组,提供一个索引值返回该位置的元素,负索引值从数组末尾计算索引。数组匹配的解构赋值用于从 slice() 方法返回的数组中获取元素。

const arrayTest = ["第一个元素", "第二个元素", "最后一个元素"];
const length = arrayTest.length;
const [lastValue] = arrayTest.slice(-1);
console.log(lastValue); // 最后一个元素 

3. 数组 pop 方法

pop() 方法从数组中删除最后一个元素并将其返回,此方法会修改原来的数组。如果数组为空,则返回 undefined 并且不修改数组。

const arrayTest = ["第一个元素", "第二个元素", "最后一个元素"];
const length = arrayTest.length;
const lastValue = arrayTest.pop();
console.log(lastValue); // 最后一个元素
console.log(arrayTest); // [ '第一个元素', '第二个元素' ] 

性能比较

让按性能比较这 3 种方法。

const arrayTest = ["第一个元素", "第二个元素", "最后一个元素"];

console.time("==> length");
const length = arrayTest.length;
let lastValue = arrayTest[length - 1];
console.log(lastValue);
console.timeEnd("==> length");

console.time("====> slice");
let [lastValue1] = arrayTest.slice(-1);
console.log(lastValue1);
console.timeEnd("====> slice");

console.time("======> pop");
let lastValue2 = arrayTest.pop();
console.log(lastValue2);
console.timeEnd("======> pop"); 

输出的结果如下:

最后一个元素
==> length: 6.38ms
最后一个元素
====> slice: 0.038ms
最后一个元素
======> pop: 0.033ms 

总结

pop() 方法是最快的,如果可以修改数组,则可以使用它。如果你不想改变数组,可以使用 slice() 方法。利用数组 length 属性的方法是最慢的,属于是获取数组最后一个元素的最常用方法。

[转]:JavaScript 中获取数组最后一个元素3种方法及性能

 

标签:元素,console,arrayTest,JavaScript,获取,length,数组,const
From: https://www.cnblogs.com/ToBeBest/p/17551299.html

相关文章

  • WPF获取MainWindows实例
    WPF获取MainWindow实例在其他类中获取MainWindow实例,获取其控件,改变其控件属性等,代码如下:_mainWindow=Application.Current.Windows.Cast<Window>().FirstOrDefault(Window=>WindowisMainWindow)asMainWindow;例如在ConfigureViewModel中改变MainWindow中的某个TextB......
  • 求js数组最大值
    1letarr=[1,2,3,4,5]23letmax=arr.reduce((prev,cur)=>{4returnMath.max(prev,cur)5})67console.log(max)//expectedoutput:5 //找出数组中最大/小的数字constnumbers=[5,6,2,3,7];//使用Math.min/Math.max以及apply函数......
  • 如何实现redis 获取目录下所有key的具体操作步骤
    如何使用Redis获取目录下所有key概述在使用Redis时,有时需要获取指定目录下的所有key,本文将教会你如何实现这个功能。准备工作在开始之前,确保你已经安装并配置好Redis。如果你还没有安装Redis,可以参考Redis官网的文档进行安装。步骤下面是实现"Redis获取目录下所有key"的步骤:......
  • 解决redis value存对象 有时候获取不到的具体操作步骤
    如何解决Redisvalue存对象有时候获取不到的问题概述在使用Redis时,我们经常会将对象存储为value,而有时候我们会遇到获取不到value的情况。本文将介绍如何解决Redisvalue存对象有时候获取不到的问题,并提供了一些代码示例供参考。步骤步骤操作1连接到Redis数据库2......
  • PHP 获取13位毫秒级时间戳
    $dateTime不传值取当前时间/***@parammixed$dateTime任意有效时间格式**@returnint*@throws\Exception*/functiongetMillisecond($dateTime=null):int{$microTime=$dateTime===null?microtime(true):(new\DateTime($dateTime))->getTimes......
  • [C#] MiniExcel获取表格标题内容
    MiniExcel的GetColumns仅返回标题的有效列(如果有5列就返回A,B,C,D,E五个字符),不能给出标题名稍作修改:privatestaticFileStreamMiniExcel_OpenSharedRead(stringpath){returnFile.Open(path,FileMode.Open,FileAccess.Read,FileShare.Read......
  • JavaScript
    引入JavaScript1.内部标签<script></script>2.外部引用<scriptsrc="引入JavaScript.js"></script>浏览器控制台使用1.alert(弹窗)alert();2.console.log(控制台打印)console.log();数据类型1.等于和绝对等于==等于(类型不一样,值相等,判断为true)===绝......
  • 已知两点坐标及角度获取圆心
    方法一:`//////获取逆时针圆心坐标////////////////////////privatevoidCalcCenter(doublex1,doubley1,doublex2,doubley2,doubletheta,outdoublecx,outdoublecy){cx=0;cy=0;if(theta==0){thrownewArgumentException("thera......
  • 利用远程调试获取Chromium内核浏览器Cookie
    前言本文将介绍不依靠DPAPI的方式获取Chromium内核浏览器Cookie远程调试首先我们以edge为例。edge浏览器是基于Chromium的,而Chromium是可以开启远程调试的,开启远程调试的官方文档如下:https://blog.chromium.org/2011/05/remote-debugging-with-chrome-developer.htmlchrome......
  • JS去除对象数组中指定字段为空的数据
     去掉为空字段constfilteredArr=this.arouselList.filter((obj)=>{                return!(Object.prototype.hasOwnProperty.call(obj,'pic')&&(obj.pic===null||obj.pic===undefined));               });去掉不......