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

标签 javascript

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

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

split 返回包含abc 的数组。

不应该拼接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"]

关于javascript - 为什么调用 split 和 splice 会给出空数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10845075/

相关文章:

Javascript smoothscroll 由于某种原因不起作用

javascript - 如何在CQ中为节点开发自定义ACL

javascript - 从 flickr api/YQL 中提取城镇/城市

javascript - 如何使用微软视频API?

javascript - 如何运行使用 javascript 动态加载的脚本

javascript - 删除导致页面刷新问题的查询参数

javascript - 以编程方式从多个输入字段上传多个文件 - blueimp jquery fileupload

javascript - 编写 if else 语句的更好方法

javascript - 这个for循环有什么问题?

javascript - Angular 未检测到我的指令