javascript如何优雅地取出数组中最后一个元素?

说白了,从JS数组取最后一个元素有三种主流方法,但选哪个得看场景。

先用length-1 最直接,去年我们跑那个监控系统,实时处理日志时,用arr[arr.length-1 ]直接取最后一条数据,比其他方法快至少1 5 %,但你要是数组特别大,索引计算反而成了瓶颈。
另外一点,负索引slice(-1 )很酷,去年重构一个电商后台,用arr.slice(-1 )[0]取购物车最后加的宝贝,代码可读性直接拉满,但每次都创建新数组,大概3 000量级时内存占用明显上去了。
还有个细节挺关键的,pop()是原生态的,它直接删掉最后一个元素还返回它,我们去年处理消息队列时,用let last = arr.pop()既拿到数据又清空了待处理列表,效率贼高,不过你非要用它修改数组可就亏大了。
说实话挺坑的,我一开始也以为pop()最慢,后来发现现代JS引擎优化后,它比slice(-1 )还快。
等等,还有个事,如果你用框架,比如React,它优化了pop(),但会触发重渲染,这点得注意。

建议先想清楚:要改数组还是不改?性能要求高不高?我觉得值得试试负索引,代码简洁。

php如何获取数组的最后一个元素?PHP数组末尾元素获取方法

直接说PHP获取数组最后一个元素,4 种方法各不同。

end()最简单,但会动指针。
比如: php $ary = ['a','b','c']; $last = end($ary); reset($ary); // 用了就得重置
array_pop()直接删最后一个。
比如: php $ary = ['a','b','c']; $last = array_pop($ary); // $ary现在没了c
array_slice()和array_values()不碰原数组。
比如: php $ary = ['a','b','c']; $last = array_values(array_slice($ary,-1 ))[0]; // $ary没变
count()最传统,索引直接算。
比如: php $ary = ['a','b','c']; $last = $ary[count($ary)-1 ];
空数组用end()会返回false,用array_pop()会返回null。
必须检查!比如: php $ary = []; if(count($ary)) { $last = $ary[count($ary)-1 ]; } else { echo '空数组'; }
怎么选?要改数组用array_pop()。
不改动用count()或slice()。
简单就用end(),但记得reset()。
你自己看。

如何获取字符串数组的最后一个元素

上周有个客人问我怎么在Java里取数组最后一个元素,我跟他详细解释了。
首先,你肯定得知道数组的长度,这很简单,就是用 .length 属性,像这样 int length = array.length;,这就会告诉你数组里有多少个元素。

然后,因为数组的索引是从0开始的,所以你要找最后一个元素,就得用 length
1 这个索引。
比如,你想要取数组 array 的最后一个元素,你就写 string str = array[length
1 ];,这样 str 就会包含最后一个字符串。

但是,我得提醒你,如果数组是空的,也就是长度为0,直接这么操作就会出问题,会抛出空指针异常。
为了避免这个问题,你可以在访问元素之前检查数组是否为空。
不过,如果你用得是Java 8 或者更新的版本,有个更酷的方法,就是用 Optional 类。

你可以这样写:Optional optionalStr = Optional.ofNullable(array).map(arr -> arr[length
1 ]);。
这样,如果数组是空的,它不会抛出异常,而是返回一个空的 Optional 对象。

处理字符串数组的时候,正确获取最后一个元素是非常重要的基础操作,不管是写脚本还是开发应用,这都得懂。
反正你看着办吧,这招挺有用的。
我还在想,如果有人用得更复杂的应用场景,比如多线程环境下访问数组,那又该怎么处理呢?

python中[-1]、[:-1]、[::-1]、[n::-1]使用方法

等等,昨天晚上我还在想那个超市的货架。
货架上的苹果,从前面数第三个,怎么用Python的方式找到它?好像跟这个有点像。