我正在尝试使用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”]
有人可以解释这种行为。谢谢!
答案 0 :(得分:3)
那是因为Splice返回你删除的元素。
请记住Splice修改原始数组,以便在您进行
时a = a.splice(curr2,1);
您正在存储已删除的元素。
用
替换该行a.splice(curr2,1);
这应该可以解决你的问题!
答案 1 :(得分:0)
您的代码从索引1开始从数组中提取1个元素:
var a = [];
a.push("cs");
a.push("ac");
var curr2 = a.indexOf("ac");
console.log("curr2 = " + curr2);
// curr2 = 1;
if (curr2 != -1) {
var b = a.slice();
b.splice(curr2, 1);
console.log(b);
// ["ac"]
var c = a.slice();
c.splice(1, 1);
console.log(c);
// ["ac"]
}

答案 2 :(得分:0)
splice
返回您在数组中删除的项目。简而言之,将a = a.splice(curr2,1);
更改为a.splice(curr2,1);
,您的代码将按预期工作。由于splice
修改了数组,因此您将得到一个没有所需元素的数组。在此之前,您将a重新分配给splice