JS.splice返回删除的项目?

Mic*_*cah 7 javascript

我有理解拼接的问题,我想要帮助.

请检查jsfiddle.

http://jsfiddle.net/fantill/TbpWf/1/

value = "c, a, b"
value = value.split(',').splice(1, 1).join(',')
alert(value);
Run Code Online (Sandbox Code Playgroud)

这个价值应该有回报'c, b'.

然而,它返回'a';

这种方法有什么问题?

非常感谢你.

Exp*_*lls 15

.splice 确实返回删除的项目.但是,它也在内部操纵数组.这可以防止你将任何东西链接到.splice; 你必须做两个单独的电话:

value = value.split(',');
value.splice(1, 1);
console.log(value.join(','));
Run Code Online (Sandbox Code Playgroud)

如果你这样做value = value.splice(...),value被覆盖,阵列就丢失了!


Ble*_*der 8

.splice是就地的,所以只需删除value =它就会像你期望的那样修改数组:

> var value = "c, a, b";
> value = value.split(', ');
["c", "a", "b"]
> value.splice(1, 1);
["a"]
> value
["c", "b"]
Run Code Online (Sandbox Code Playgroud)


小智 7

var a = ["1","2","3"]
a.splice(1,1) && a
a=["1","3"]
Run Code Online (Sandbox Code Playgroud)

  • 虽然这可能会回答这个问题,但一些评论和/或解释会很好.这也将有助于其他用户. (7认同)