delete 数组中的元素,数组长度怎么改变

使用 delete 删除元素,返回 true 和 false,true 表示删除成功,false 表示删除失败。

使用 delete 删除数组元素并不会改变原数组的长度,只是把被删除元素的值变为 undefined,对应位置变成空位(hole)。

const arr = [1, 2, 3, 4];
delete arr[1];
console.log(arr);      // [1, undefined, 3, 4]
console.log(arr.length); // 4
console.log(2 in arr);   // false

补充:因为 delete 只是断开属性与对象的联系,数组的 length 属性不会变。如果你需要真正缩短数组,请使用 splice、pop、shift 等数组方法:

arr.splice(1, 1);  // 从索引 1 开始删除 1 个元素
console.log(arr);  // [1, 3, 4]

来源整理自:vue3js.cn 面试官系列