是否有一種快速(簡短,字符明智)的方式來獲取數組的最後一個元素(假設數組非空)?在CoffeeScript中獲取數組的最後一個元素
我通常做的:
last = array[array.length-1]
或last = array[-1..][0]
是否有一種快速(簡短,字符明智)的方式來獲取數組的最後一個元素(假設數組非空)?在CoffeeScript中獲取數組的最後一個元素
我通常做的:
last = array[array.length-1]
或last = array[-1..][0]
如果您使用CoffeeScript的現代版,不要用這個。改爲使用dule的答案。
如果你不介意修改陣列,
last = array.pop()
如果你不想數組做修改,
last = array[..].pop()
編譯爲last = array.slice(0).pop()
。我認爲對於已經暴露給CoffeeScript或Python切片的人來說,它是非常易讀的。但是請記住,對於大型陣列來說,它將比last = array[array.length-1]
慢得多。我不推薦last = array[-1..][0]
。這很簡短,但我認爲它的含義並不明顯。不過,這完全是主觀的。
美麗,先生。 – frhd
應該注意的是,array.slice(0).pop()會創建一個全新的數組,以獲取最後一個元素。我會在下面建議杜爾的建議。 – HasFiveVowels
@HasFiveVowels:同意。那時,CoffeeScript不支持這種語法。我已經更新了我的答案,以指向未來的讀者而不是Dule的答案。 – Snowball
另一種方法是用咖啡的解構:
[..., last] = array
我喜歡獨樂的建議,這是爲什麼:
我「嘗試的CoffeeScript」測試這種解構方法,網上咖啡JS編譯器在http://coffeescript.org/。
鑑於以下的CoffeeScript:
arr = [1,2,3,4,5]
[..., last] = arr
它編譯成:
var arr, last;
arr = [1, 2, 3, 4, 5];
last = arr[arr.length - 1];
這確實是理想的。解構語法非常清晰簡潔。編譯後的JavaScript是高性能的。我沒有理由不使用這個。
(我沒有足夠的聲譽張貼此爲下獨樂的回答評論,所以我增加了它,即使它是一個評論的答案。)
或者你可以這樣做:
last = array[-1..]
'last = array.pop()'或'last = arr.slice()。pop()'如果你*不想從數組中移除該元素。 –
對於簡潔的解決方案,我推薦'last =(function(arr){return arr.splice(-1,1)[0];})。apply(null,[Array.prototype。slice.call(array,0,array ['length'])]);'。 – Snowball
@Lchi是否需要數組最後一個值的副本,或者如果想要修改數組的最後一個元素,是否需要數組的最後一個元素? – jackwanders