🌶️第3期第1题:使用delete删除数组元素,其长度会改变吗?
Opened this issue · 0 comments
LinDaiDai commented
使用delete删除数组元素,其长度会改变吗?
(题目来源:haizlin/fe-interview#2462)
咱来写个案例🌰看看就知道了:
var arr = [1, 2, 3]
delete arr[1]
console.log(arr)
console.log(arr.length)
结果如下:
通过结果,我们可以得出结论:使用delete
删除数组元素,其长度是不会改变的。
关于这一点,大家可以把数组理解为是一个特殊的对象,其中的每一项转换为对象的伪代码为:
key: value
// 对应:
0: 1
1: 2
2: 3
length: 3
所以我们使用delete
操作符删除一个数组元素时,相当于移除了数组中的一个属性,被删除的元素已经不再属于该数组。但是这种改变并不会影响数组的length
属性。
扩展:
- 如果你想让一个数组元素继续存在但是其值是
undefined
,那么可以使用将undefined
赋值给这个元素而不是使用delete
。例如:arr[1] = undefined
- 如果你想通过改变数组的内容来移除一个数组元素,请使用
splice()
方法。例如:arr.splice(1, 1)