繁体   English   中英

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

[英]why calling split and splice gives empty array?

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

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

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

不应splice插入za ,给我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说的那样,splice修改了数组到位http://jsfiddle.net/k9tMW/

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

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

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

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(''));​

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM