滑稽行为

问题描述:

我在jconsole滑稽行为

a = [1,2,3,4,5,6,7,8,9,10] 
1,2,3,4,5,6,7,8,9,10 

在这里与splice()方法进行试验,一个是从1一个简单的数组至10

b = ['a','b','c'] 
a,b,c 

而这是b

a.splice(0, 2, b) 
1,2 
a 
a,b,c,3,4,5,6,7,8,9,10 

当我将数组b传递给splice的第三个参数时,我的意思是“删除前两个参数从索引零开始,并用b数组替换它们“。我从来没有见过将数组作为splice()的第三个参数传递(所有的guide pages I read都讨论了参数列表),但是,好像它似乎有诀窍。 [1,2]被删除,现在a是[a,b,c,3,4,5,6,7,8,9,10]。然后我建立另一个数组,我称之为C:

c = ['one','two','three'] 
one,two,three 

并尝试这样做:

a.splice(0, 2, c) 
a,b,c,3 
a 
one,two,three,4,5,6,7,8,9,10 

这一次,4(而不是2)的元素被除去[A,B,C ,3],并在开始时添加c数组。有人知道为什么吗?我确信解决方案是微不足道的,但我现在不明白。

Array.splice确实不是支持数组作为第三个参数。
参考:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice

使用Firebug(或Chrome的控制台),可以看到到底发生了什么:

a.splice(0, 2, b) 
> [1, 2] 
a 
> [["a", "b", "c"], 3, 4, 5, 6, 7, 8, 9, 10] 

这里的问题JConsole的,它只是使用toString()打印出数组,但Array.toString()无法打印任何[]

+0

太好了。我被“平坦的”jconsole答案所误导(其中一切似乎都是单个数组,而不是作为第一个数组的第一个成员)。现在一切都清楚了。 – janesconference 2010-12-01 11:44:31