记录一些在不修改原数组的基础上,获取数组最后一个元素的方法,有更多便捷的方法欢迎评论区继续补充。
注: 以下方法,对空数组的情况下,均可正常执行,不报错。对空数组,结果将返回 undefined
1、使用 arr[arr.length – 1]
这种方法不仅可以用于Array类型,还可以用于
arguments
、Set
const lastElement = arr[arr.length-1]
实际开发的时候,变量名通常会比较长,这样一来,这种写法就太长了。
2、使用Array.pop()
使用数组出栈的方法,可以移除数组的最后一个元素,并返回该元素
注意这里会改变原数组,因此在获取前需要浅拷贝数组。
可以使用slice(0)或es6扩展运算符,浅拷贝数组。
const lastElement = [...arr].pop();
谨慎选择,就怕你不记得先浅拷贝,直接pop出栈了
3、【推荐】使用Array.slice(-1)
slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。
上面提到浅拷贝可以使用slice,既然都使用了slice,那么,可以直接使用slice的begin支持负数的特性,直接截取最后一个元素组成数组。注意slice返回的是数组
// slice返回的是数组,一定要记得取0索引元素
const lastElement = arr.slice(-1)[0]
这种写法最简洁
4、Array.reverse翻转数组后获取第一个数组
reverse() 方法将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
该方法会改变数组,所以还是要先浅拷贝
const lastElement = [...arr].reverse()[0]
这不比第二种还长。
[前端CookBook系列]JS获取数组最后一个元素