Splice()函数无法按预期工作

时间:2017-07-05 23:18:30

标签: 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”]

有人可以解释这种行为。谢谢!

3 个答案:

答案 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

的返回值