您的位置:首页 > Web前端 > JavaScript

JS数组操作

2017-07-10 09:01 190 查看
一、js删除数组元素

  

[javascript] view
plain copy

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技术博客  

 

二、删除重复元素

[javascript] view
plain copy

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()---------通俗的讲,就是弹出数组的最后一个元素。结合下面的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]。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: