经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
在 javascript 中如何快速获取数组指定位置的元素
来源:jb51  时间:2023/4/26 8:49:56  对本文有异议

前言

在 JavaScript 中如果我们需要获取一个数组指定位置的元素,通常情况下,我们一般采用以下方法:

1.通过下标直接获取指定元素:arr[index], index 为非负数。

  1. let arr = [1, 4, 5, 8, 10]
  2. // 获取数组的第一个元素
  3. let num1 = arr[0]
  4. // 获取数组的最后一个元素
  5. let num2 = arr[arr.length - 1]
  6. // 获取数组的倒数第二个元素
  7. let num3 = arr[arr.length - 2]
  8. console.log(num1, num2, num3); // 1 10 8

根据正序位置获取指定的元素比较方便,但是根据逆序位置(倒数第几个)获取指定的元素稍微繁琐(需要计算出正序位置)。
正序时 index 为正整数或0,逆序时 index 为负整数。

那么获取对应位置元素的表达式可以表示为:

index 为正数或0:arr[index]

index 为负数: arr[arr.length + index]

2.通过 slice 方法获取

  1. let arr = [2, 4, 6, 8, 10]
  2. // 获取数组的第一个元素
  3. let num4 = arr.slice(0, 1)
  4. // 获取数组的最后一个元素
  5. let num5 = arr.slice(-1)
  6. // 获取数组的倒数第二个元素
  7. let num6 = arr.slice(-2, -1)
  8. console.log(num4[0], num5[0], num6[0]); // 2 10 8

其实在其他语言中比如 python 如果你想要获取倒数第几个元素是可以通过 arr[index] 直接获取(如arr[-1]获取倒数第一个元素), 但是在 JavaScript 中是不支持这样获取的。

为了更方便获取数组指定位置的元素(无论时正序还是逆序位置),数组提供了一个内置方法 at() 可以通过元素下标直接获取指定位置的数组元素

数组的 at() 方法

我们使用 at 方法实现以上案例:

  1. let arr2 = [2, 4, 6, 8, 10]
  2. // 获取数组的第一个元素
  3. let num4 = arr2.at(0)
  4. // 获取数组的最后一个元素
  5. let num5 = arr2.at(-1)
  6. // 获取数组的倒数第二个元素
  7. let num6 = arr2.at(-2)
  8. console.log(num4, num5, num6); // 2 10 8

语法:at(index), index 是整数,其中包括负整数表示从左往右数第几个元素。

获取指定位置不存在的元素返回 undefined

  1. let arr = [2, 4, 6, 8, 10]
  2. console.log(arr[5]); // undefined

获取类数组指定位置元素

  1. let likeArr = {
  2. length: 2,
  3. 0: 'vue',
  4. 1: 'react'
  5. }
  6. let lang = Array.prototype.at.call(likeArr, 0)
  7. console.log(lang); // vue

对比

方法参数范围简易程度
arr[index]非负整数逆序获取元素时需要进行计算,相对繁琐
slice(startIndex, endIndex)整数一般需要一到两个下标,相对繁琐
at(index)整数只需一个下标 index ,相对简单

到此这篇关于在 javascript 中快速获取数组指定位置的元素的文章就介绍到这了,更多相关js获取数组指定位置的元素内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号