Javascript js。拼接返回已删除的项目?

Javascript js。拼接返回已删除的项目?,javascript,Javascript,我有理解拼接的问题,我想得到帮助 请检查JSFIDLE 该值应该返回'c,b' 但是,它返回'a' 这种方法有什么问题 非常感谢。。splice会返回已删除的项目。但是,它也在内部操纵数组。这可以防止您将任何内容链接到。splice;您必须分别拨打两个电话: value = value.split(','); value.splice(1, 1); console.log(value.join(',')); 如果执行value=value.splice(…),value将被覆盖,阵列将丢失

我有理解拼接的问题,我想得到帮助

请检查JSFIDLE

该值应该返回
'c,b'

但是,它返回
'a'

这种方法有什么问题

非常感谢。

。splice
会返回已删除的项目。但是,它也在内部操纵数组。这可以防止您将任何内容链接到
。splice
;您必须分别拨打两个电话:

value = value.split(',');
value.splice(1, 1);
console.log(value.join(','));

如果执行
value=value.splice(…)
value
将被覆盖,阵列将丢失

.splice
已就位,因此只需删除
值=
,它就会像您预期的那样修改阵列:

> var value = "c, a, b";
> value = value.split(', ');
["c", "a", "b"]
> value.splice(1, 1);
["a"]
> value
["c", "b"]

如果发现剪接< /代码>的返回行为恼人,如许多人所做的,并且必须在一个程序中经常使用它,您可以考虑添加以下两个自定义原型函数中的一个来代替。 有一个流行的

splicate
选项,它的行为与您在问题中预期的
splice
一样

Array.prototype.spaited=function(){
Array.prototype.splice.apply(这是参数);
归还这个;
}
value=“c、a、b”;
value=value.split(',')。拼接(1,1)。join(',');

log(JSON.stringify(value))splice
返回删除的项目,并且输出应该是
a
,因为这就是您删除的项目。问题出在哪里?虽然这可以回答问题,但一些评论和/或解释会很好。这也会帮助其他用户。像这样的解决方案提醒我,我不知道javascript实际上是如何工作的。
splice
的结果将始终是一个数组,即使是空数组也将被评估为
true
。在javascript和大多数语言中,
true
&&
任何内容都将始终等于该内容,在本例中为拼接的数组。
> var value = "c, a, b";
> value = value.split(', ');
["c", "a", "b"]
> value.splice(1, 1);
["a"]
> value
["c", "b"]
var a = ["1","2","3"]
a.splice(1,1) && a
a=["1","3"]