我对删除运算符在数组元素上的使用感到困惑。
我发现删除可以与数组元素一起使用,它会删除元素,但不会更新数组长度,所以基本上该元素被undefined替换。但是当我测试它时,我发现它用空格替换它
var test = new Array()
delete test[id];
所以我对此有3分
test[id]
id是元素的元素或索引,因为我读到id可以是两者。但是当我测试它时,我发现只有当我通过索引时才能工作。
如果数组没有元素怎么办?我尝试通过传递delete test[3]
之类的任何值来删除?
答案 0 :(得分:4)
delete
不会从数组中删除实际的元素。它只是将值设置为undefined
delete
不会更改数组的length
delete
演示
var arr = [1, 2, 3, 4, 5];
delete arr[2];
document.write(arr);
console.log(arr);
document.write('<br />Length: ' + arr.length);
&#13;
使用splice()
如果您传递了一个超出范围的索引要删除,splice()方法通过删除现有元素和/或添加新元素来更改数组的内容。
splice()
将以静默方式返回。
arr.splice(indexToDelete, 1);
splice()
演示
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;