javascript絕對是計算機語言最複雜的語言之一,與最近上映的《美人女》同樣細思極恐,簡單、平靜的表面下釀醞着巨大能量。javascript
這是一道js core的基礎題,考察應聘者的掌握的基礎知識。java
注意審題,你寫出的方法不但須要刪除最後一個元素,而且數組長度須要縮減。數組
通常能想到的第一種方法是彈出數組最後的一個值:ip
var a = [2,3,4];
a.pop();
console.log(a);內存[2, 3]字符串
這個方法很好地完成了任務。console
最思考下來,能夠考慮經過js的核心方法slice,這個方法既能操做字符串,亦能操做數組:基礎
var a = [2,3,4];
a = a.slice(0,-1);
console.log(a);
[2, 3]遍歷
這個方法重組構造了數組,取原數組的一部份。能完成這個功能的還有splice方法:技巧
var a = [2,3,4];
a.splice(-1,1);
console.log(a);[2, 3]
nice,已經擁有了三種方法。
注意,splice與slice不一樣,它返回的是含被刪除元素的數組。
還有沒有?還有。
在js中,數組的長度length屬性是可讀可寫的,若是將其長度減1,那麼最後一個元素天然被刪除了:
var a = [2,3,4];
a.length -= 1;
console.log(a);
[2, 3]
如今已經有四種方法了,還有沒有其它方法呢,應該是還有的,好比遍歷後再賦值空數組,丟棄最後一個元素;反轉數組後shift第一個,再反轉等等,這些都不是很好的技巧。
那麼能不能使用delete呢?delete是能夠刪除數組元素的,但它並不能使數組長度減1:
var a = [2,3,4];
delete a[a.length - 1];
console.log(a,a.length);[2, 3, undefined] 3
能夠看到,被刪除元素不存在,不佔用內存空間,它的值被設爲undefined,但,長度仍舊不變。
js 中,超出數組最大長度的值都爲undefined。
同理,若是將最後一個元素設爲undefined,它的值雖然被刪除,但數組長度是不變的。
var a = [2,3,4];
a[a.length - 1] = undefined;
console.log(a,a.length);
[2, 3, undefined] 3
以上問題基於ECMAscript v3/javascript 1.5/JScript 5.5。
若是有更好的方法能夠探討。