Array.splice()的有趣行为
-
29-09-2019 - |
题
我正在尝试使用剪接方法()方法 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()
不打印任何 []
.
不隶属于 StackOverflow