2013-05-05 85 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 - 的接头方法返回删除的元素 - **没有原始阵列**

相关问题