Javascript删除数组列表元素上的运算符

时间:2015-08-28 07:08:20

标签: javascript arrays

我对删除运算符在数组元素上的使用感到困惑。

我发现删除可以与数组元素一起使用,它会删除元素,但不会更新数组长度,所以基本上该元素被undefined替换。但是当我测试它时,我发现它用空格替换它

var test = new Array()
delete test[id];

所以我对此有3分

  1. test[id] id是元素的元素或索引,因为我读到id可以是两者。但是当我测试它时,我发现只有当我通过索引时才能工作。

  2. 如果数组没有元素怎么办?我尝试通过传递delete test[3]之类的任何值来删除?

  3. 当我删除一个元素然后用undefined或空格替换它?

1 个答案:

答案 0 :(得分:4)

不要在数组上使用delete,请使用splice()

  1. delete不会从数组中删除实际的元素。它只是将值设置为undefined
  2. delete不会更改数组的length
  3. delete演示

    
    
    var arr = [1, 2, 3, 4, 5];
    
    delete arr[2];
    
    document.write(arr);
    console.log(arr);
    document.write('<br />Length: ' + arr.length);
    &#13;
    &#13;
    &#13;

    使用splice()

      

    splice()方法通过删除现有元素和/或添加新元素来更改数组的内容。

    如果您传递了一个超出范围的索引要删除,

    splice()将以静默方式返回。

    arr.splice(indexToDelete, 1);
    

    splice()演示

    &#13;
    &#13;
    var arr = [1, 2, 3, 4, 5];
    
    arr.splice(2, 1);
    arr.splice(100, 1); // For out of bounds index, it fails silently
    
    document.write(arr);
    console.log(arr);
    document.write('<br />Length: ' + arr.length);
    &#13;
    &#13;
    &#13;