在这个JavaScript中,我为什么不得到azbc
?
var x = "a-b-c".split('-').splice(1, 0, 'z');
alert(x.join(''));
split
返回包含a
,b
和c
的数组。
不应splice
在z
之后插入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(''));
答案 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(''));