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

why calling split and splice gives empty array?

本文关键字:数组 splice 调用 split 为什么      更新时间:2023-09-26

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

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

split返回一个包含 abc 的数组。

splice不应该在a后插入z并给我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(''));

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"]

就像Paolo说的,拼接会修改数组,http://jsfiddle.net/k9tMW/

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

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

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

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

你必须这样做,

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