2013-05-05 66 views
2

我有一個小問題,理解爲什麼我會得到這個輸出。爲什麼我從這個簡單的拼接命令獲得這個輸出?

var arr = ["a", "b", "c", "d", "e", "f"]; 
arr.splice(2,0,"1"); 
console.log(arr); 

var arr2 = ["a", "b", "c", "d", "e", "f"]; 
arr2 = arr2.splice(2,0,"2"); 
console.log(arr2); 

輸出繼電器是:

[ 'a', 'b', '1', 'c', 'd', 'e', 'f' ] 
[] 

爲什麼不輸出的第二行:

[ 'a', 'b', '2', 'c', 'd', 'e', 'f' ] 

它是轉讓或什麼的問題?

回答

7

閱讀約splice方法。它返回

包含已刪除元素的數組。如果只有一個元素被刪除,則返回一個元素的數組。所以

arr2 = arr2.splice(2,0,"2"); 

您覆蓋初始陣列arr與剪接返回空數組[]

+0

完全沒看到這個答案。否則不會發布重複。 :) – techfoobar 2013-05-05 07:46:18

+0

那麼,鏈接.split()和.splice()是不可能的嗎?如果我們有'var str =「12345」;'爲了輸出:'[「1」,「2」,「a」,「3」,「4」,「5」],我們必須這樣做: 'var arr = str.split(「」); arr.splice(2,0, 「A」);返回arr;'?爲什麼我們不能使用'arr = str.split(「」)。splice(2,0,「a」);' – Moolla 2013-05-05 08:05:25

+0

@Moolla不,你不能像這樣鏈接它們,因爲'splice'不會返回第一個數組。 – dfsq 2013-05-05 08:10:17

2

1 - 的接頭方法更改數組的內容

2 - 的接頭方法返回刪除的元素 - **沒有原始陣列**

相關問題