2012-05-24 35 views
13

我只是想確認如果以下兩個JavaScript語句產生相同的結果,因爲在我看來:Javascript「shift」與「拼接」 - 這些陳述是否相同?

第一:

var element = my_array.splice(0,1)[0]; 

二:

var element = my_array.shift(); 

我想替換第一個是在我自己的代碼中,以提高可讀性。我可以這樣做嗎?

+1

是的,兩者是等價的。 –

+0

http://www.webartzforum.com/t3019-javascript-shift-slice-splice – Rab

回答

24

他們將有同樣的效果,是的。 splice(0, 1)將從my_array中移除第一個元素並返回包含該元素的新數組。 shift會做同樣的事情,但返回元素本身,而不是數組。

shift更可讀的(在我的意見),並且還significantly faster(Chrome中至少):

enter image description here

+0

我已經提高了每個人的答案 - 但選擇你的是因爲額外的性能圖形和信息。謝謝大家! –

5

的代碼兩條線從陣列中移除的第一個元素,並返回所移除的元件,它們都在所有主要瀏覽器支持。

您應該使用第二個,代碼將更具可讀性的確。

2

shift返回已刪除的元件,splice返回元件的陣列中刪除的。

這樣說,這兩個陳述做同樣的事情,我會同意第二個更具可讀性。