思考题 获取数组的最后一个元素
16 May 2016

jansesun原创,转载请注明出处

之前在UESTC前端群里跟一些朋友分享了一些javascript的思考题,旨在促进群内技术讨论,共同进步。期间不乏思维的火花,一直想将这些宝贵的财富沉淀下来,以便日后翻阅。

这个题目并没有技术难点,主要在于开拓思路,并不局限于函数式编程,所以有些函数会修改原有数组。

方案一 利用数组长度和索引

var getLastElement = function(arr) {
	return arr[arr.length - 1];
};

方案二 利用数组slice操作

var getLastElement = function(arr) {
	return arr.slice(-1)[0];
};

方案三 利用数组pop操作

var getLastElement = function(arr) {
	return arr.pop();
};

方案四 利用数组splice操作

var getLastElement = function(arr) {
	return arr.splice(-1, 1)[0];
};

方案五 利用数组的reverse和索引

var getLastElement = function(arr) {
	arr.reverse();
	return arr[0];
};

方案六 利用数组reverse和shift操作

var getLastElement = function(arr) {
	arr.reverse();
	return arr.shift();
};

除方案一和方案二之外均会修改原数组,reverse会增加O(n)的时间复杂度,shift会增加O(n)的时间复杂度,所以方案五、六仅用于拓展思维,不建议在实际中采用。