JS数组操作

来源:互联网 发布:淘宝助理编辑宝贝 权重 编辑:程序博客网 时间:2024/05/19 18:42

一、js删除数组元素

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

 

二、删除重复元素

[javascript] view plain copy
  1. Array.prototype.del = function(n) {   
  2.         if (n<0) {  
  3.           return this;   
  4.         }  
  5.         return this.slice(0,n).concat(this.slice(n+1,this.length));   
  6.       }  
  7.     Array.prototype.removeRepeat=function() {   
  8.         this.sort();   
  9.         var rs = [];   
  10.         var cr = false;   
  11.         for (var i=0; i<this.length; i++)   
  12.         {   
  13.           if (!cr) cr = this[i];   
  14.           else if (cr==this[i]) rs[rs.length] = i;   
  15.           else cr = this[i];   
  16.         }   
  17.         var re = this;   
  18.         for (var i=rs.length-1; i>=0; i--) re = re.del(rs[i]);   
  19.         return re;   
  20.       }  
  21.   
  22. /////////////////////////////////////////////  
  23. Array.prototype.unique=function()  
  24. {  
  25. var a={};  
  26. for(var i=0;i<this.length;i++)  
  27. {  
  28. if(typeof a[this[i]]=="undefined")  
  29. a[this[i]]=1;  
  30. }  
  31. this.length=0;  
  32. for(var i in a)  
  33. this[this.length]=i;  
  34. return this;  
  35. }  
  36.   
  37.    var    a    =    [1,2,4,12,5,3,5,4,8,5,2,8,8,1,5];     
  38.    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()---------通俗的讲,就是弹出数组的最后一个元素。结合下面的push方法,使得将数组作为栈来使用成为可能。pop方法返回数组最后一个元素的值,并将length属性减1,即返回后立即丢失最后一个元素。 
objArray.push([value1[,value2[,....]]])-------------将参数添加到数组的结尾。如:[1,2,3, 4].push("a","b")将得到[1,2,3,4,"a","b"] 
objArray.reverse()将数组中的元素反转排列。如:[1,2,3].reverse()将得到[3,2,1],这个操作是在原有数组上经行操作,同时也返回数组本身 
objArray.shift()-----------移去数组的第一个元素,并返回这个元素的值。这个方法的性质和pop方法很类似,pop方法是移去最后一个元素。 
objArray.slice(start,end)----------- 返回数组对象的一个子集,索引从start开始(包括 start),到end结束(不包括end),原有数组不受影响。如:[1,2,3,4,5,6].slice(1,4)将得到[2,3,4]。当 start或者end为负数时,则使用他们加上length后地值。如:[1,2,3,4,5,6].slice(-4,-1)将得到[3,4,5]。如果end小于等于start,将返回空数组。 
objArray.sort(comparefn)------- 根据comparefn定义的大小比较函数,对一个数组进行排序。函数comparefn必须接受两个参数element1,element2,如果需要需要element1排在element2之前,应该返回一个负数;如果需要element1排在element2之后,应该返回一个正数,如果两个数平等对待(即保持原有顺序)则返回0。当省略comparefn时,则元素按照字典顺序排列。如:对定义的比较函数cmp: function cmp(e1,e2){return e1-e2;}则[3,4,2,7].sort(cmp)将得到[2,3,4,7]. 
objArray.splice(start,deleteCount[,item1,item2[,...]]]) 这是一个复杂的函数,用于完成数组元素的删除 取代和插入操作。其中,start参数表示要进行操作的索引位置,deleteCount指从start开始要删除的元素的元素个数(包括了start位置),如果deleteCount省略,则表示从start开始要删除数组的剩余部分。[,item1[,item2[,...]]]则表示可选的插入到start之前的元素列表。如: 
var arr=[0,1,2,3,4,5,6]; 
arr.splice(1,1); 
document.write(arr);//显示“0,2,3,4,5,6” 
arr=[0,1,2,3,4,5,6]; 
arr.splice(0,0,"a","b"); 
document.write(arr);//显示“a,b,0,1,2,3,4,5,6" 
arr=[0,1,2,3,4,5,6]; 
arr.splice(3,2,"c","d"); 
document.write(arr);//显示"0,1,2,c,d,5,6" 
objArray.unshift(item1[,item2[,...]]])------------------- 将参数列表插入到数组的开头。其性质和push方法类型,但push方法是将元素添加到数组的结尾。如: [1,2,3,4].unshift("a","b")将得到["a","b",1,2,3,4]。 

原创粉丝点击