日期:2014-05-16  浏览次数:20352 次

JS删除数组元素

、JS删除数组元素

view plaincopy to clipboardprint?
1.delete方法:delete arr[1]??
这种方式数组长度不变,此时arr[1]变为undefined了,但是也有好处原来数组的索引也保持不变,此时要遍历数组元素可以才用??
for(index in arr)??
document.write(’arr[’+index+’]=’+arr[index]);??
这种遍历方式跳过其中undefined的元素??
?
* 该方式IE4.o以后都支持了??
?
2.数组对象splice方法:arr.splice(1,1);??
这种方式数组长度相应改变,但是原来的数组索引也相应改变??
splice参数中第一个1,是删除的起始索引(从0算起),在此是数组第二个元素??
第二个1,是删除元素的个数,在此只删除一个元素,即’b';??
此时遍历数组元素可以用普通遍历数组的方式,比如for,因为删除的元素在??
数组中并不保留??
?
* 该方法IE5.5以后才支持??
?
值得一提的是splice方法在删除数组元素的同时,还可以新增入数组元素??
比如arr.splice(1,1,’d',’e'),d,e两个元素就被加入数组arr了??
结果数组变成arr:’a',’d',’e',’c’本文出自 51CTO.COM技术博客?
1.delete方法:delete arr[1]
这种方式数组长度不变,此时arr[1]变为undefined了,但是也有好处原来数组的索引也保持不变,此时要遍历数组元素可以才用
for(index in arr)
document.write(’arr[’+index+’]=’+arr[index]);
这种遍历方式跳过其中undefined的元素

* 该方式IE4.o以后都支持了

2.数组对象splice方法:arr.splice(1,1);
这种方式数组长度相应改变,但是原来的数组索引也相应改变
splice参数中第一个1,是删除的起始索引(从0算起),在此是数组第二个元素
第二个1,是删除元素的个数,在此只删除一个元素,即’b';
此时遍历数组元素可以用普通遍历数组的方式,比如for,因为删除的元素在
数组中并不保留

* 该方法IE5.5以后才支持

值得一提的是splice方法在删除数组元素的同时,还可以新增入数组元素
比如arr.splice(1,1,’d',’e'),d,e两个元素就被加入数组arr了
结果数组变成arr:’a',’d',’e',’c’本文出自 51CTO.COM技术博客

二、删除重复元素

view plaincopy to clipboardprint?
Array.prototype.del = function(n) {???
??????? if (n<0) {??
????????? return this;???
??????? }??
??????? return this.slice(0,n).concat(this.slice(n+1,this.length));???
????? }??
  ? Array.prototype.removeRepeat=function() {???
??????? this.sort();???
??????? var rs = [];???
??????? var cr = false;???
??????? for (var i=0; i<this.length; i++)???
??????? {???
????????? if (!cr) cr = this[i];???
????????? else if (cr==this[i]) rs[rs.length] = i;???
????????? else cr = this[i];???
??????? }???
??????? var re = this;???
??????? for (var i=rs.length-1; i>=0; i--) re = re.del(rs[i]);???
??????? return re;???
????? }??
?
/////////////////////////////////////////////??
Array.prototype.unique=function()??
{??
var a={};??
for(var i=0;i<this.length;i++)??
{??
if(typeof a[this[i]]=="undefined")??
a[this[i]]=1;??
}??
this.length=0;??
for(var i in a)??
this[this.length]=i;??
return this;??
}??
?
?? var??? a??? =??? [1,2,4,12,5,3,5,4,8,5,2,8,8,1,5];?????
?? alert(a??? +"\n"+??? a.unique());??
Array.prototype.del = function(n) {
??????? if (n<0) {
????????? return this;
??????? }
??????? return this.slice(0,n).concat(this.slice(n+1,this.length));
????? }
  ? Array.prototype.removeRepeat=function() {
??????? this.sort();
??????? var rs = [];
??????? var cr = false;
??????? for (var i=0; i<this.length; i++)
??????? {
????????? if (!cr) cr = this[i];
????????? else if (cr==this[i]) rs[rs.length] = i;
????????? else cr = this[i];
??????? }
??????? var re = this;
??????? for (var i=rs.length-1; i>=0; i--) re = re.del(rs[i]);
??????? return re;
????? }

/////////////////////////////////////////////
Array.prototype.unique=function()
{
var a={};
for(var i=0;i<this.length;i++)
{
if(typeof a[this[i]]=="undefined")
a[this[i]]=1;
}
this.length=0;
for(var i in a)
this[this.length]=i;
return this;
}

?? var??? a??? =??? [1,2,4,12,5,3,5,4,8,5,2,8,8,1,5];??
?? alert(a??? +"\n"+??? a.unique());
?

三、其他

new Array()
new Array(len)
new Array([item0,[item1,[item2,...]]]
使用数组对象的方法:
var objArray=new Array();
objArray.concact([item1[,item2[,....]]]-------------------将参数列表连接到objArray的后面形成一个新的数组并返回,原有数组不受影响。如:var arr=["a","b","c"];
arr.concact("d","e");
将返回包括从"a"到"e"字母元素的数组。而arr本身不受影响。
objArray.join(separator)-----------------以separator指定的字符作为分割符,将数组转换为字符串,当seperator 为逗号时,其作用和toString()相同。
objArray.pop()---------