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

时间:2012-06-01 05:51:16

标签: javascript

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

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

split返回包含abc的数组。

不应splicez之后插入a并给我azbc吗?

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

请注意: 我知道我想要的是:

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

因为splice“修改”原始数组本身。不应该将{a,b,c}修改为{a,z,b,c},然后将其分配到x

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

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

4 个答案:

答案 0 :(得分: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"]

答案 1 :(得分:1)

像Paolo所说,splice修改了数组http://jsfiddle.net/k9tMW/

var array = "a-b-c".split('-');
array.splice(1, 0, 'z');
alert(array.join(''));

答案 2 :(得分:1)

Mozilla Developer Network-Array splice method - 更改数组的内容,在删除旧元素时添加新元素。

返回 - 包含已删除元素的数组。如果只删除一个元素,则返回一个元素的数组。

var x = "a-b-c".split('-');
x.splice(1, 0, 'z');
document.write(x + "<br />"); 

答案 3 :(得分:1)

你必须这样做,

var x = "a-b-c".split('-');
x.splice(1, 0, 'z');
alert(x.join(''));​