Javascript Splice()函数未按预期工作

Javascript Splice()函数未按预期工作,javascript,arrays,Javascript,Arrays,我试图使用splice()函数从JavaScript中的数组中删除特定元素,但无法删除目标元素 var a = []; a.push("cs"); a.push("ac"); var curr2 = a.indexOf("ac"); if(curr2 != -1){ a = a.splice(curr2,1); } console.log(a); 预期结果:[“cs”]实际结果:[“ac”] 有人能解释一下这种行为吗。谢

我试图使用splice()函数从JavaScript中的数组中删除特定元素,但无法删除目标元素

    var a = [];
    a.push("cs");
    a.push("ac");
    var curr2 = a.indexOf("ac");
    if(curr2 != -1){
        a = a.splice(curr2,1);
    } 
    console.log(a);
预期结果:[“cs”]实际结果:[“ac”]


有人能解释一下这种行为吗。谢谢

代码从数组中从索引1开始提取1个元素:

var a=[];
a、 推送(“cs”);
a、 推动(“ac”);
var curr2=a.indexOf(“ac”);
console.log(“curr2=“+curr2”);
//curr2=1;
如果(电流2!=-1){
var b=a.slice();
b、 拼接(2,1);
控制台日志(b);
//[“ac”]
var c=a.slice();
c、 拼接(1,1);
控制台日志(c);
//[“ac”]
} 

您的代码从数组中从索引1开始提取1个元素:

var a=[];
a、 推送(“cs”);
a、 推动(“ac”);
var curr2=a.indexOf(“ac”);
console.log(“curr2=“+curr2”);
//curr2=1;
如果(电流2!=-1){
var b=a.slice();
b、 拼接(2,1);
控制台日志(b);
//[“ac”]
var c=a.slice();
c、 拼接(1,1);
控制台日志(c);
//[“ac”]
} 

这是因为拼接会返回您删除的元素

请记住,拼接会修改原始阵列,因此在进行

a = a.splice(curr2,1);
您正在存储删除的元素

将该行替换为

a.splice(curr2,1);

这应该能解决你的问题

这是因为拼接会返回您删除的元素

请记住,拼接会修改原始阵列,因此在进行

a = a.splice(curr2,1);
您正在存储删除的元素

将该行替换为

a.splice(curr2,1);

这应该能解决你的问题

splice
返回数组中已删除的项。简而言之,更改
a=a.拼接(curr2,1)
a.拼接(电流2,1)并且您的代码将按预期工作。由于
splice
修改数组,因此将得到一个没有所需元素的数组。其中,与之前一样,将a重新指定给
splice

splice
的返回值将返回您在数组中删除的项。简而言之,更改
a=a.拼接(curr2,1)
a.拼接(电流2,1)并且您的代码将按预期工作。由于
splice
修改数组,因此将得到一个没有所需元素的数组。与之前一样,您将a重新分配给
splice

的返回值,我的理解是
splice()
会影响您的数组,不需要将其结果分配给同一数组,因为如果您这样做,则会将删除的值分配给数组,在您的第二个示例中,删除部分
a=
,您就会明白我的意思,您的第一个示例给出的是[“2”]而不是[“1”]明白了。谢谢它按预期工作,因为您的预期是错误的。我知道
splice()
会影响您的数组,不需要将其结果分配给同一数组,因为如果您这样做,您将为数组分配删除的值,在第二个示例中,删除部分
a=
,您就会明白我的意思,你的第一个例子给出的是[“2”]而不是[“1”]明白了。谢谢它按预期工作,因为你预期的是错误的事情。