首页 » 编写高质量代码:改善JavaScript程序的188个建议 » 编写高质量代码:改善JavaScript程序的188个建议全文在线阅读

《编写高质量代码:改善JavaScript程序的188个建议》建议52:建议使用splice删除数组

关灯直达底部

删除数组元素的方法有多种,最简单的方法是利用length属性来截断数组,但这种方法比较笨拙,仅能够截断尾部元素。在JavaScript中,由于数组其实就是对象,因此使用delete运算符可以从数组中移除元素。


var numbers=['zero','one','two','three','four','five','six','seven','eight','nine'];

delete numbers[2];//numbers=['zero','one',undefined,'three','four','five','six','seven','eight','nine'];


但是,使用这种方式删除指定下标位置的元素后,会在数组中遗留一个空洞。这是因为排在被删除元素之后的元素保留了它们最初的名字(下标位置),而我们通常想要的是递减后面每个元素的名字(下标)。

幸运的是,JavaScript数组有一个splice方法,它可以删除一些元素并将它们替换为其他的元素。splice方法的第一个参数是数组中的一个序号,第二个参数是要删除的元素个数。任何额外的参数会在序号那个点的位置被插入数组中。例如:


var numbers=['zero','one','two','three','four','five','six','seven','eight','nine'];

numbers.splice(2,1);//numbers=['zero','one','three','four','five','six','seven','eight','nine'];


执行以上代码之后,元素值为“three”的下标值从4变为3,同理,其后所有元素的下标值都递减1。因为必须移除被删除元素后面的每个元素,并且将一个新的键值重新插入,因此,这对于大型数组来说效率会更高。