7

我在jconsole中试验 splice() 方法

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

这里,a 是一个从 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 的第三个参数时,我的意思是“从索引零中删除 a 的前两个参数,并将它们替换为 b 数组”。我从未见过将数组作为 splice() 的第三个参数传递(我阅读的所有指南页面都在谈论参数列表),但是,它似乎可以解决问题。[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 数组。有人知道为什么吗?我确信解决方案是微不足道的,但我现在不明白。

4

1 回答 1

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()不打印任何[].

于 2010-12-01T11:40:30.423 回答