2010-12-01 74 views
7

我在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數組。有人知道爲什麼嗎?我確信解決方案是微不足道的,但我現在不明白。

回答

6

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