思考题 数组第一个元素容错处理
16 May 2016

jansesun原创,转载请注明出处

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

var arr = arr.length ? [arr[0]] : [];

上面这种代码大家肯定很熟悉,可能写过或者看到过,这种写法也不能说不优雅,但是是否有更好的或者别的思路呢?在之前的思考题 一维数组深复制中大家肯定见过了数组丰富而强大的api了,想想是否有别的方式呢?

这个问题是我在review别人代码的时候想到的,觉得有些启发,所以整理出来。

方案一 利用数组的splice操作

var getFirstElement = function(arr) {
	return arr.splice(0, 1);
};

splice会破坏原数组,但也不失为一种解决方案,如果想函数式编程,那么请远离splice,拥抱下面的方案

方案二 利用数组的slice操作

var getFirstElement = function(arr) {
	return arr.slice(0, 1);
};

以上方案只解决已知arr类型为数组。

只要平时多思考,灵活的利用api,你会爱上javascript,也许会爱上写javascript的你。