javascript – Array.splice()的有趣行为

我正在尝试 jconsole中的splice()方法
a = [1,2,3,4,5,6,7,8,9,10]
1,10

这里,a是1到10的简单数组.

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

这是b

a.splice(0,b)
1,2
a
a,c,10

当我将数组b传递给splice的第三个参数时,我的意思是“从索引零中删除一个前两个参数,并用b数组替换它们”.我从未见过传递一个数组作为splice()的第三个参数(所有guide pages I read关于参数列表的讨论),但是,好吧,它似乎可以做到这一点. [1,2]被删除,现在a是[a,10].然后我构建另一个数组,我称之为c:

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

并尝试做同样的事情:

a.splice(0,c)
a,3
a
one,three,10

这次,删除了4个(而不是2个)元素[a,3],并在开头添加了c数组.有人知道为什么吗?我确信这个解决方案很简单,但我现在没办法解决.

解决方法

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

使用Firebug(或Chrome的控制台),可以看到真正发生的事情:

a.splice(0,b)
> [1,2]
a
> [["a","b","c"],10]

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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...