我正在尝试使用剪接方法()方法 jconsole

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传递到剪接的第三个参数时,我的意思是“从索引零删除A的前两个参数,然后用B数组替换它们”。我从未见过将数组作为剪接()的第三个参数(所有 我读的指南页面 谈论一个论点列表),但是,它似乎可以解决问题。 [1,2]被删除,现在A IS [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

使用 火焰 (或Chrome的控制台),人们看到了真正发生的事情:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top