日期:2014-05-16 浏览次数:20470 次
、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()---------