使用delete删除数组,其长度会改变吗?

100 阅读1分钟

"当使用 JavaScript 中的 delete 操作符删除数组中的元素时,数组的长度不会改变。删除元素后,数组的长度不会自动调整,而是会留下一个空的位置,该位置的值为 undefined。例如:

let arr = [1, 2, 3, 4, 5];
delete arr[2]; // 删除索引为2的元素
console.log(arr); // 输出: [1, 2, undefined, 4, 5]
console.log(arr.length); // 输出: 5

在上面的例子中,虽然我们使用 delete 删除了索引为2的元素,但数组的长度仍然为5,并且在索引为2的位置留下了一个值为 undefined 的空间。

因此,使用 delete 删除数组中的元素不会改变数组的长度,而是会在被删除的位置留下一个值为 undefined 的空间。 如果需要真正地从数组中移除元素并且调整数组的长度,应该使用 splice() 方法:

let arr = [1, 2, 3, 4, 5];
arr.splice(2, 1); // 从索引为2的位置开始,删除一个元素
console.log(arr); // 输出: [1, 2, 4, 5]
console.log(arr.length); // 输出: 4

在这个例子中,使用 splice() 方法真正地删除了索引为2的元素,并且调整了数组的长度为4。"