从数组中移除元素

实现:

当试图从数组中间移除元素,删除看上去是一个很好的解决办法。但是,当把这个方法使用在数组元素的时候,简单的删除只能删掉元素的内容,但是数组的空间仍旧保留,没有删除。

如果需要移除的元素位于数组的开头或者结尾部分,你可以分别使用shiftpop来移除它们。使用功能函数splice可以移除数组中处于中间部分的元素,在删除元素的同时删除其所占用的空间。

使用splice函数的时候,传递所要修改的数组、开始的地方、删除的个数。例如,下面这个程序用于删除所有小于等于3个字符的元素:

@array = qw(now is the time for all good men to come to the aid of their country);
print "Before: @array\n";
for ($i = 0; $i < @array; $i++)
{
    splice(@array, $i, 1) and $i-- if (length $array[$i] <= 3);
}
print "After: @array\n"; 

程序的输出结果如下:

Before: now is the time for all good men to come to the aid of their country
After: time good come their country

当功能函数splice移除元素的时候,它把其它的数组中的元素前移(注意:我们在每次运行for语句删除元素的时候,都需要备份,这样我们就不会遗漏任何的元素)

功能函数splice是一个删除数组中间元素的简单方法。

Contributors: FHL