javascript的数组Array好像没有默认函数可以删除元素,当同事问起的时候也询问了下google,发现的确没有,继续谷之要删除元素需要要做下面三步:
1.删除元素
2.删除元素后的所有元素的索引-1
3.数组长度-1
根据上面三步策略,扩充了下Array的prototype,增加了两个函数用于删除数组,当然这里暂时没有考虑性能问题,只是为了满足日常所用。代码如下:
<script language="javascript">
Array.prototype.removeItems=function(){
if(arguments.length == 0){
return;
}else{
for(var idx in arguments){
for(var i=0,n=0;i<this.length;i++){
if(!(this[i]==arguments[idx])){
this[n++]=this[i];
}
}
this.length-=1;
}
}
}
Array.prototype.removeIndex=function(){
if(arguments.length == 0){
return;
}else{
for(var idx in arguments){
if(isNaN(arguments[idx])){
continue;
}
for(var i=0,n=0;i<this.length;i++){
if(!(i==arguments[idx])){
this[n++]=this[i];
}
}
this.length-=1;
}
}
}
//test code
var dd = new Array();
dd[0]='a';
dd[1]='b';
dd[2]='c';
dd[3]='e';
// dd.removeItems('b','a');
dd.removeIndex(1,2);
alert(dd);
</script>
removeItems函数删除数组中对应的元素值,可以传递多个参数,当不传参数的时候默认不做任何处理。
removeIndex函数删除数组中对应索引的元素值,可以传递多个参数,当不传参数的时候默认不做任何处理,当传递的参数非数字或者尝过长度时候,忽略其参数。