为什么调用split和splice给出空数组?

Ray*_*eng 2 javascript

在这个JavaScript中,为什么我没有得到azbc

var x = "a-b-c".split('-').splice(1, 0, 'z');
alert(x.join(''));
Run Code Online (Sandbox Code Playgroud)

split返回包含一个数组a,bc.

不应该splice插入za给我azbc

为什么我得到一个空数组?

注意:我知道我想要的东西可以通过以下方式完成:

var x = "a-b-c".split('-')
x.splice(1, 0, 'z');
alert(x.join(''));
Run Code Online (Sandbox Code Playgroud)

因为splice"修改"原始数组本身.不应该对其进行修改{a,b,c}{a,z,b,c},然后被分配到x

得到它......下面的代码帮助我理解.

var x = "a-b-c".split('-')
x = x.splice(1, 0, 'z');
alert(x.join(''));
Run Code Online (Sandbox Code Playgroud)

Pao*_*ino 6

splice 返回数组中已删除的项,而不是新数组:

> x = 'a-b-c'.split('-');
["a", "b", "c"]
> x.splice(1,0,'z');
[]
> x
["a", "z", "b", "c"]
> x.splice(1,1,'x');
["z"]
> x
["a", "x", "b", "c"]
Run Code Online (Sandbox Code Playgroud)