曾经看到一篇文章,说删除数组中某一元素的步骤应该这样:
delete
元素前移
重设数组length
其实使用数组方法 splice 可以一步完成。
arrayObject.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])
start 要删除的开始位置。
deleteCount 要删除的个数。
item1, item2, . . ., itemN 如果指定此值,可以在删除的位置插入元素。如果插入的是数组,则只取第一个元素。
start
正数越界:不出错,什么也不会删除,不论 deleteCount 是何值。
负数:不出错。
-1 表示从最后一个元素开始删。
-2 表示从倒数第二个元素开始删。
……
负的数组长度,表示从第一个元素开始删,相当于是 0。
小于负的数组长度,等效于负的数组长度。
deleteCount
省略:从 start 对应位置开始,往右全部删除。
负数:不出错、不删除。
deleteCount 本身越界:不出错、不删除。
deleteCount 指向的元素有越界、有没越界的:不出错、删除未越界元素。
deleteCount 数的方向
不论 start 是正是负、deleteCount 是正是负,我们确定要删除的元素时,都是从左往右数 deleteCount 个。