Javascript Splice()函数未按预期工作
我试图使用splice()函数从JavaScript中的数组中删除特定元素,但无法删除目标元素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”] 有人能解释一下这种行为吗。谢
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”]明白了。谢谢它按预期工作,因为你预期的是错误的事情。